使用Maven管理Spring

[TOC]

使用maven管理Spring

1. 概述

本教程向您展示如何通過(guò) Maven 管理 Spring 的依賴關(guān)系.最新的Spring版本可以在 [Maven Central倉(cāng)庫(kù)] 中找到. 也可以訪問(wèn) mvnrepository.

2. 使用Maven管理基本的Spring依賴關(guān)系

Spring被設(shè)計(jì)為可高度模塊化的 —— 使用Spring中的一部分,不應(yīng)該也不需要引用另一個(gè)不相關(guān)的部分. 例如, 使用基本的Spring Context可以不使用 Persistence或MVC相關(guān)的Spring庫(kù).
讓我們從一個(gè)非常簡(jiǎn)單的Maven設(shè)置開(kāi)始,這里只使用 spring-context 依賴 :

<properties>
    <org.springframework.version>3.2.8.RELEASE</org.springframework.version>
    <!-- <org.springframework.version>4.0.2.RELEASE</org.springframework.version> -->
</properties>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${org.springframework.version}</version>
    <scope>runtime</scope>
</dependency>

spring-context包定義了Spring注入(Injection)容器,并依賴很少的Spring包: spring-core, spring-expression, spring-aop 和 spring-beans. 通過(guò)啟用支持一些 Spring的核心技術(shù)增強(qiáng)了Spring容器: Spring表達(dá)式語(yǔ)言 (SpEL), 面向切面編程 支持以及 JavaBeans機(jī)制.
注意,我們將spring-context依賴的范圍指定為 runtime scope —— 這將確保在編譯時(shí)沒(méi)有任何依賴Spring特定api的部分. 對(duì)于一些底層開(kāi)發(fā)的情況,可以將 runtime scope 從選定的Spring依賴項(xiàng)中移除(Maven 默認(rèn)是compile),但對(duì)于簡(jiǎn)單的項(xiàng)目來(lái)說(shuō),并不需要在編碼時(shí)對(duì)Spring 的整個(gè)框架進(jìn)行調(diào)用.
還要注意,從Spring 3.2開(kāi)始, 不需要定義CGLIB 依賴關(guān)系(現(xiàn)在升級(jí)到了CGLIB3.0)—— 它已經(jīng)被重新打包(現(xiàn)在所有 net.sf.cglib 包變成了 org.springframework.cglib包)并直接集成在 spring-core 這個(gè) JAR包中(詳情請(qǐng)參考 JIRA計(jì)劃文檔).

3. Spring Persistence與Maven

現(xiàn)在讓我們看看 Spring持久化依賴項(xiàng) —— 主要是 spring-orm :

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${org.springframework.version}</version>
</dependency>

提供了Hibernate和JPA支持,如 HibernateTemplate 和 JpaTemplate —— 以及持久性相關(guān)的一些依賴關(guān)系: spring-jdbc 和 spring-tx.
JDBC Data Access庫(kù)定義了 [Spring JDBC支持] 以及 JdbcTemplate, 而 spring-tx 代表了非常靈活的 [事務(wù)管理的抽象] (Transaction Management Abstraction).

4. Spring MVC與Maven

要使用Spring Web和Servlet支持,需要在pom中添加兩個(gè)依賴項(xiàng), 當(dāng)然,也需要上面所說(shuō)的核心依賴:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework.version}</version>
</dependency>

spring-web 依賴包含Servlet和Portlet環(huán)境中常用的web特定工具,而 spring-webmvc 對(duì)Servlet環(huán)境提供了MVC支持.
因?yàn)?spring-webmvc 將 spring-web 作為一個(gè)依賴,所以在使用 spring-webmvc時(shí)不需要顯式地定義 spring-web.

5. Spring Security與Maven

關(guān)于 Security Maven依賴的深入討論請(qǐng)參考 [Spring Security 3.2.x與Spring 4.0.x的Maven依賴管理].

6. Spring Test與Maven[xx]

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring.version}</version>
    <scope>test</scope>
</dependency>

從Spring 3.2開(kāi)始,Spring MVC Test項(xiàng)目 作為一個(gè)獨(dú)立的項(xiàng)目在github上提供下載 ,并且已被列入 core Test框架,只需要依賴 spring-test 就夠了.
注意,那些仍然依賴Spring 3.1及以下版本的較老的項(xiàng)目,獨(dú)立的舊的Maven依賴仍然存在并可繼續(xù)使用,幾乎是一樣的結(jié)果. 但不是在Maven Central倉(cāng)庫(kù)中,所以使用他們需要添加一個(gè)自定義倉(cāng)庫(kù)到項(xiàng)目的pom中.

7. 使用里程碑版本(Milestones)

Spring的release版本托管在Maven中央倉(cāng)庫(kù)中. 但是,如果一個(gè)項(xiàng)目需要使用里程碑版本,那么需要在pom中添加Spring自己的Maven庫(kù):

<repositories>  
    <repository>  
        <id>repository.springframework.maven.milestone</id>  
        <name>Spring Framework Maven Milestone Repository</name>  
        <url>http://repo.spring.io/milestone/</url>  
    </repository>  
</repositories>  

添加這個(gè)倉(cāng)庫(kù)以后,項(xiàng)目就可以定義如下的依賴關(guān)系:

<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-core</artifactId>  
    <version>3.2.0.RC2</version>  
</dependency>  

8. 使用Snapshots(快照)

和milestons版本一樣, Spring的快照版也托管在自己的倉(cāng)庫(kù)中:

<repositories>  
    <repository>  
        <id>repository.springframework.maven.snapshot</id>  
        <name>Spring Framework Maven Snapshot Repository</name>  
        <url>http://repo.spring.io/snapshot/</url>  
    </repository>  
</repositories> 

只要在pom中啟用了 SNAPSHOT 倉(cāng)庫(kù),就可以引用以下的依賴關(guān)系:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>3.3.0.BUILD-SNAPSHOT</version>
</dependency>

當(dāng)然, 4.x 也是一樣的:

<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-core</artifactId>  
    <version>4.0.3.BUILD-SNAPSHOT</version>  
</dependency>  

9. 總結(jié)

本文討論了使用Maven管理 Spring的實(shí)際情況. 主要介紹的是Maven依賴,還有其他一些知識(shí)點(diǎn). 應(yīng)該是在項(xiàng)目中使用Spring的一篇很好的入門文章.


原文鏈接:[Spring with Maven]
原文日期:2013年04月17日
翻譯日期:2014年06月29日
翻譯人員:[鐵錨]
[Maven Central倉(cāng)庫(kù)]:http://search.maven.org/#search|ga|1|g%3A%22org.springframework%22
[Spring JDBC支持]:http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/jdbc.html
[事務(wù)管理的抽象]:http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/transaction.html
[Spring Security 3.2.x與Spring 4.0.x的Maven依賴管理]:http://blog.csdn.net/renfufei/article/details/35787159
[Spring with Maven]:http://www.baeldung.com/spring-with-maven
[鐵錨]:http://blog.csdn.net/renfufei

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市完慧,隨后出現(xiàn)的幾起案子蕉堰,更是在濱河造成了極大的恐慌饮睬,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件危队,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)送挑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)暖眼,“玉大人惕耕,你說(shuō)我怎么就攤上這事〗氤Γ” “怎么了司澎?”我有些...
    開(kāi)封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)栋豫。 經(jīng)常有香客問(wèn)我挤安,道長(zhǎng),這世上最難降的妖魔是什么丧鸯? 我笑而不...
    開(kāi)封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任蛤铜,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘围肥。我一直安慰自己剿干,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布虐先。 她就那樣靜靜地躺著怨愤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛹批。 梳的紋絲不亂的頭發(fā)上撰洗,一...
    開(kāi)封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音腐芍,去河邊找鬼差导。 笑死,一個(gè)胖子當(dāng)著我的面吹牛猪勇,可吹牛的內(nèi)容都是我干的设褐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泣刹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼助析!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起椅您,我...
    開(kāi)封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤外冀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后掀泳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雪隧,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年员舵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脑沿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡马僻,死狀恐怖庄拇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情韭邓,我是刑警寧澤措近,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站仍秤,受9級(jí)特大地震影響熄诡,放射性物質(zhì)發(fā)生泄漏可很。R本人自食惡果不足惜诗力,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苇本,春花似錦袜茧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至俺夕,卻和暖如春裳凸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劝贸。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工姨谷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人映九。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓梦湘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親件甥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捌议,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容