这篇文章说明了如何通过Maven配置Spring依赖项。最新的Spring版本可以在Maven Central上找到。
Maven中的Spring基本依赖关系
Spring的设计是高度模块化的 - 使用Spring的一部分不应该而且不需要另一部分。例如,基本的Spring Context可以没有Persistence或MVC Spring库。
让我们先从一个基本Maven配置,将只使用了spring-context依赖:
<properties>
<org.springframework.version>3.2.8.RELEASEorg.springframework.version>
properties>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>${org.springframework.version}version>
<scope>runtimescope>
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.springframeworkgroupId>
<artifactId>spring-ormartifactId>
<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.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>${org.springframework.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<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.springframeworkgroupId>
<artifactId>spring-testartifactId>
<version>${spring.version}version>
<scope>testscope>
dependency>
复制代码
从Spring 3.2开始,Spring MVC Test项目已经包含在核心测试框架中 - 因此包括spring-test依赖就足够了。
使用Milestones
Spring的发布版本托管在Maven Central上。但是,如果项目需要使用Milestones版本,则需要将自定义Spring存储库添加到pom中:
<repositories>
<repository>
<id>repository.springframework.maven.milestoneid>
<name>Spring Framework Maven Milestone Repositoryname>
<url>http://repo.spring.io/milestone/url>
repository>
repositories>
复制代码
已定义了一个此存储库,该项目可以定义依赖项,例如:
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>3.2.0.RC2version>
dependency>
复制代码
使用Snapshots
与Milestones类似,Snapshots托管在自定义存储库中:
<repositories>
<repository>
<id>repository.springframework.maven.snapshotid>
<name>Spring Framework Maven Snapshot Repositoryname>
<url>http://repo.spring.io/snapshot/url>
repository>
repositories>
复制代码
在pom.xml中启用SNAPSHOT存储库后,可以引用以下依赖项:
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>3.3.0.BUILD-SNAPSHOTversion>
dependency>
复制代码
对于4.x:
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>4.0.3.BUILD-SNAPSHOTversion>
dependency>
复制代码