使用Maven管理Spring[转]

原文链接: Spring with Maven

原文日期: 2013年04月17日

翻译日期: 2014年06月29日

翻译人员: 铁锚

翻译原文连接:http://blog.csdn.net/renfufei/article/details/35794985

1. 概述

本教程向您展示如何通过 Maven 管理 Spring 的依赖关系.最新的Spring版本可以在 Maven Central仓库 中找到. 也可以访问  mvnrepository:org.springframework.

2. 使用Maven管理基本的Spring依赖关系 

Spring被设计为可高度模块化的 —— 使用Spring中的一部分,不应该也不需要引用另一个不相关的部分. 例如, 使用基本的Spring Context可以不使用 Persistence或MVC相关的Spring库. 让我们从一个非常简单的Maven设置开始,这里只使用 spring-context 依赖 :

[html] view plaincopyprint?

  1. <properties>
  2. <org.springframework.version>3.2.8.RELEASE</org.springframework.version>
  3. <!-- <org.springframework.version>4.0.2.RELEASE</org.springframework.version> -->
  4. </properties>
  5. <dependency>
  6. <groupId>org.springframework</groupId>
  7. <artifactId>spring-context</artifactId>
  8. <version>${org.springframework.version}</version>
  9. <scope>runtime</scope>
  10. </dependency>

spring-context 包定义了Spring注入(Injection)容器,并依赖很少的Spring包: spring-core, spring-expression, spring-aop 和 spring-beans. 通过启用支持一些 Spring的核心技术增强了Spring容器: Spring表达式语言 (SpEL), 面向切面编程 支持以及 JavaBeans机制. 注意,我们将spring-context依赖的范围指定为 runtime scope —— 这将确保在编译时没有任何依赖Spring特定api的部分. 对于一些底层开发的情况,可以将 runtime scope 从选定的Spring依赖项中移除(Maven 默认是compile),但对于简单的项目来说,并不需要在编码时对Spring 的整个框架进行调用. 还要注意,从Spring 3.2开始, 不需要定义CGLIB 依赖关系(现在升级到了CGLIB3.0)—— 它已经被重新打包(现在所有 net.sf.cglib 包变成了 org.springframework.cglib包)并直接集成在 spring-core 这个 JAR包中(详情请参考 JIRA计划文档).

3. Spring Persistence与Maven

现在让我们看看 Spring持久化依赖项 —— 主要是 spring-orm :

[html] view plaincopyprint?

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-orm</artifactId>
  4. <version>${org.springframework.version}</version>
  5. </dependency>
 

它提供了Hibernate和JPA支持,如 HibernateTemplate JpaTemplate —— 以及持久性相关的一些依赖关系: spring-jdbc 和 spring-tx. JDBC Data Access库定义了 Spring JDBC支持 以及 JdbcTemplate, 而 spring-tx 代表了非常灵活的 事务管理的抽象(Transaction Management Abstraction).

4. Spring MVC与Maven

要使用Spring Web和Servlet支持,需要在pom中添加两个依赖项, 当然,也需要上面所说的核心依赖:

[html] view plaincopyprint?

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-web</artifactId>
  4. <version>${org.springframework.version}</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework</groupId>
  8. <artifactId>spring-webmvc</artifactId>
  9. <version>${org.springframework.version}</version>
  10. </dependency>
 

spring-web 依赖包含Servlet和Portlet环境中常用的web特定工具,而 spring-webmvc 对Servlet环境提供了MVC支持. 因为 spring-webmvc 将 spring-web 作为一个依赖,所以在使用 spring-webmvc时不需要显式地定义 spring-web.

5. Spring Security与Maven

关于 Security Maven依赖的深入讨论请参考 Spring Security 3.2.x与Spring 4.0.x的Maven依赖管理.

6. Spring Test与Maven

Spring Test框架可以通过以下依赖引入到项目中:

[html] view plaincopyprint?

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-test</artifactId>
  4. <version>${spring.version}</version>
  5. <scope>test</scope>
  6. </dependency>
 

从Spring 3.2开始,Spring MVC Test项目 作为一个独立的项目在github上提供下载 ,并且已被列入 core Test框架,只需要依赖 spring-test 就够了. 注意,那些仍然依赖Spring 3.1及以下版本的较老的项目,独立的旧的Maven依赖仍然存在并可继续使用,几乎是一样的结果. 但不是在Maven Central仓库中,所以使用他们需要添加一个自定义仓库到项目的pom中.

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

Spring的release版本托管在Maven中央仓库中. 但是,如果一个项目需要使用里程碑版本,那么需要在pom中添加Spring自己的Maven库:

[html] view plaincopyprint?

  1. <repositories>
  2. <repository>
  3. <id>repository.springframework.maven.milestone</id>
  4. <name>Spring Framework Maven Milestone Repository</name>
  5. <url>http://repo.spring.io/milestone/</url>
  6. </repository>
  7. </repositories>
 

添加这个仓库以后,项目就可以定义如下的依赖关系:

[html] view plaincopyprint?

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-core</artifactId>
  4. <version>3.2.0.RC2</version>
  5. </dependency>
 

8. 使用Snapshots(快照)

和milestons版本一样, Spring的快照版也托管在自己的仓库中:

[html] view plaincopyprint?

  1. <repositories>
  2. <repository>
  3. <id>repository.springframework.maven.snapshot</id>
  4. <name>Spring Framework Maven Snapshot Repository</name>
  5. <url>http://repo.spring.io/snapshot/</url>
  6. </repository>
  7. </repositories>
 

只要在pom中启用了 SNAPSHOT 仓库,就可以引用以下的依赖关系:

[html] view plaincopyprint?

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-core</artifactId>
  4. <version>3.3.0.BUILD-SNAPSHOT</version>
  5. </dependency>
 

当然, 4.x 也是一样的:

[html] view plaincopyprint?

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-core</artifactId>
  4. <version>4.0.3.BUILD-SNAPSHOT</version>
  5. </dependency>
 

9. 总结

本文讨论了使用Maven管理 Spring的实际情况. 主要介绍的是Maven依赖,还有其他一些知识点. 这应该是在项目中使用Spring的一篇很好的入门文章.

时间: 2024-10-10 23:37:49

使用Maven管理Spring[转]的相关文章

java框架-----spring框架------在自己的项目中如何用maven管理spring相关jar包

1.文章内容概述: spring框架是支持maven的,因为spring框架的所有模块打包而成的jar包以及spring所依赖的其他jar包都被存放了一份在maven的中央仓库中,如果你的项目使用maven进行管理,那么你就可以在你的项目中通过maven来引入你的项目所依赖的spring相关的jar包或其他依赖库. 2.spring框架中maven相关的东西: 概述:使用maven管理spring相关的jar包,需要在pom.xml中配置groupId.artifactId之类的东西,只有在po

使用Maven管理Spring

原文链接: Spring with Maven原文日期: 2013年04月17日翻译日期: 2014年06月29日翻译人员: 铁锚 1. 概述本教程向您展示怎样通过 Maven 管理 Spring 的依赖关系.最新的Spring版本号能够在 Maven Central仓库 中找到. 也能够訪问  mvnrepository:org.springframework. 2. 使用Maven管理主要的Spring依赖关系 Spring被设计为可高度模块化的 -- 使用Spring中的一部分,不应该也不

Spring入门(四):使用Maven管理Spring项目

让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要使用Maven? 之前我们新建的项目,项目所要依赖的第三方jar包都在项目的类路径下(通常为lib目录),如下所示: 使用这种方式,我们无法知道第三方类库的依赖关系,比如导入一个特定的jar包时,可能此jar包还依赖于其他的jar包,其他的jar包又依赖于更多的jar包,这也是我们平常遇到的Clas

用maven管理spring mvc时的pom.xml(hibernate 4.3+spring 4)

<dependencies> <!-- common --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.

Maven+Hibernate+Spring+Spring MVC开发新闻发布系统

使用Maven+Hibernate+Spring+Spring MVC开发新闻发布系统 课程学习地址:http://www.xuetuwuyou.com/course/163 课程出自学途无忧网:http://www.xuetuwuyou.com 课程介绍 一.课程用到的软件: 1.jdk 1.8 2.eclipse neon 3.tomcat 8 4.jetty 5.MySQL  6.navicat 9+ 二.课程涉及到的技术点 1.Maven基础 2.Maven高级 3.Hibernate

使用 Maven 管理项目

最近的练手项目使用的是 Maven 在管理项目,在使用 Maven 管理项目时,三层的开发时分模块开发的,parent-dao-service-web,所有的spring+struts + Hibernate的依赖都是加在 parent 上,dao-service-web都是作为子模块,在模块之间的关系处理的时候出现了几个问题: junit测试包的传递依赖失效了 多个配置文件的读取问题 我在 parent 工程没有添加 Junit 的依赖,在编写 dao 模块是添加了 Junit 的 jar 包

maven 打包 spring 项目

在程序中使用到了springframework控件(主要是为了使用Mybatis-spring操作数据库,省事). 使用maven管理项目的构建,现在需要生成一个jar包,包含所有依赖的jar包,并可以在命令行使用java -jar [filename] 来运行. 1. maven-assembly-plugin 最开始的时候尝试使用maven-assembly-plugin插件,配置如下: <build> <plugins> <plugin> <groupId&

Maven管理项目架包

最近一直在用Maven管理项目的架包,从而发现了几个不错的官方或者非官方的网站. http://mvnrepository.com/artifact/com.ning  这个是我刚刚用来找HTTP开发架包时候发现的,ning的官网好像对架包收费了,这个网站是提供免费的 http://netty.io/downloads.html  下载netty,关于I/O流的架包 http://www.apache.org/  apache的官网,底部的 APACHE PROJECT LIST 包括了所有Ap

Maven管理SSM框架的pom.xml文件配置(自动下载所依赖的jar包)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion&