這篇文章說明了如何通過Maven配置Spring依賴項。最新的Spring版本可以在Maven Central上找到。
Maven中的Spring基本依賴關係
Spring的設計是高度模組化的 – 使用Spring的一部分不應該而且不需要另一部分。例如,基本的Spring Context可以沒有Persistence或MVC Spring庫。
讓我們先從一個基本Maven配置,將只使用了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 Container,並且有少量的依賴項:spring-core,spring-expression,spring-aop和spring-beans。通過支援一些核心Spring技術來擴充容器:Core Spring實用程式,Spring表示式語言(SpEL),物件導向程式設計支援和JavaBeans機制。
注意我們在執行時範圍中定義了依賴關係- 這將確保在任何特定於Spring的API上沒有編譯時依賴性。對於更高階的用例,可以從一些選定的Spring依賴項中刪除執行時範圍,但是對於更簡單的專案,不需要針對Spring進行編譯以充分利用該框架。
另請注意,從Spring 3.2開始,不需要定義CGLIB依賴項(現在已升級到CGLIB 3.0) – 它已被重新打包(所有net.sf.cglib包現在是org.springframework.cglib)並且直接在內部內聯spring-core JAR(有關其他詳細資訊,請參閱JIRA)。
Maven配置Spring Persistence
現在讓我們看一下Spring Persistence依賴關係 – 主要是spring-orm:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework.version}</version>
</dependency>
這附帶了Hibernate和JPA支援 – 例如HibernateTemplate和JpaTemplate – 以及一些額外的,永續性相關的依賴項:spring-jdbc和spring-tx。
JDBC資料訪問庫定義了Spring JDBC支援以及JdbcTemplate,而spring-tx代表了極其靈活的事務管理抽象。
Maven配置Spring MVC
要使用Spring Web和Servlet支援,除了上面的核心依賴項外,還需要在pom中包含兩個依賴項:
<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環境的公共web特定實用程式,而spring-webmvc支援Servlet環境的MVC。
由於spring-webmvc將spring-web作為依賴項,因此在使用spring-webmvc時不需要明確定義spring-web。
使用maven配置Spring Security
在使用Maven配置Spring Security文章中深入討論了Maven配置Spring Security依賴關係。
使用Maven配置Spring Test
Spring Test Framework可以通過以下依賴項包含在專案中:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
從Spring 3.2開始,Spring MVC Test專案已經包含在核心測試框架中 – 因此包括spring-test依賴就足夠了。
使用Milestones
Spring的釋出版本託管在Maven Central上。但是,如果專案需要使用Milestones版本,則需要將自定義Spring儲存庫新增到pom中:
<repositories>
<repository>
<id>repository.springframework.maven.milestone</id>
<name>Spring Framework Maven Milestone Repository</name>
<url>http://repo.spring.io/milestone/</url>
</repository>
</repositories>
已定義了一個此儲存庫,該專案可以定義依賴項,例如:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.0.RC2</version>
</dependency>
使用Snapshots
與Milestones類似,Snapshots託管在自定義儲存庫中:
<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.xml中啟用SNAPSHOT儲存庫後,可以引用以下依賴項:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.3.0.BUILD-SNAPSHOT</version>
</dependency>
對於4.x:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.3.BUILD-SNAPSHOT</version>
</dependency>