原文链接: Spring with Maven
原文日期: 2013年04月17日
翻译日期: 2014年06月29日
翻译人员: 铁锚

1. 概述
本教程向您展示怎样通过 Maven 管理 Spring 的依赖关系.最新的Spring版本号能够在 Maven Central仓库 中找到. 也能够訪问  mvnrepository:org.springframework.

2. 使用Maven管理主要的Spring依赖关系 
Spring被设计为可高度模块化的 —— 使用Spring中的一部分,不应该也不须要引用还有一个不相关的部分. 比如, 使用主要的Spring Context能够不使用 Persistence或MVC相关的Spring库.
让我们从一个非常easy的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)容器,并依赖非常少的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 :

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework.version}</version>
</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中加入两个依赖项, 当然,也须要上面所说的核心依赖:

<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.

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

6. Spring Test与Maven
Spring Test框架能够通过下面依赖引入到项目中:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</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库:

<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>

8. 使用Snapshots(快照)
和milestons版本号一样, Spring的快照版也托管在自己的仓库中:

<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 仓库,就能够引用下面的依赖关系:

<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>

9. 总结

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

使用Maven管理Spring的更多相关文章

  1. 使用Maven管理Spring[转]

    原文链接: Spring with Maven 原文日期: 2013年04月17日 翻译日期: 2014年06月29日 翻译人员: 铁锚 翻译原文连接:http://blog.csdn.net/ren ...

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

    让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...

  3. maven增加Spring

    对于javax.annotation,spring某些注解要用的,比如:@Resource.   使用Maven管理基本的Spring依赖关系 Spring被设计为可高度模块化的 —— 使用Sprin ...

  4. 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)

    前言:在使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)中已经介绍了如何对web基础环境进行搭建,这里主要演示,如何对spring环境进行搭建,然后 ...

  5. 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)

    前言:原来一直使用MyEclipse,换工作后,新公司使用IDEA,初识IDEA发现,哇,它的快捷键可真多啊,但是一路用下来,觉得非常的好用,特别是利用Maven管理,那简直叫一个爽.当然笔者在使用过 ...

  6. IDEA一步步创建Maven管理的Spring入门程序

    目前,做Java开发的很多人都在使用IDEA了,而有些人也选择用Eclipse,我这里介绍一下IDEA一步步创建Maven项目的步骤,并创建一个Spring的入门程序(Java项目,非Web项目),讲 ...

  7. Maven 整合 spring profile实现多环境自动切换

    Maven 整合 spring profile实现多环境自动切换 时间:2014-03-19 15:32来源:Internet 作者:Internet 点击:525次 profile主要用在项目多环境 ...

  8. maven 打包 spring 项目

    在程序中使用到了springframework控件(主要是为了使用Mybatis-spring操作数据库,省事). 使用maven管理项目的构建,现在需要生成一个jar包,包含所有依赖的jar包,并可 ...

  9. IntelliJ IDEA 开发工具项目maven管理

    今天自己重新部署一下intellij下的项目开发环境,顺便把maven管理项目jar包的方法梳理一下 (1)首先下载apache-maven-3.0.4版本的maven,我自己解压在D:\maven\ ...

随机推荐

  1. uva 1025

    紫皮书 非原创…… 某城市的地铁是线性的有n个车站从左到右编号为1-n,有M1辆地铁从第一站出发,有M2辆车从最后一站出发,mario从第一站出发,目的是在时刻T会见车站n的一个朋友(间谍).在车站等 ...

  2. 如何在使用摩托罗拉上的RSS阅读器应用进行一次订阅

    订阅一个CSDN的RSS为例. 1.打开RSS阅读器. 2.设置->新增订阅->手动新增 订阅URL:输入http://articles.csdn.net/api/rss.php?tid= ...

  3. OPPO通过AWS节约大量成本提供海外服务

    关于OPPO OPPO最早被人熟知是在以MP3和MP4为代表的影音市场.转型进入手机市场后,OPPO获得了更大发展机遇,近几年更是成为发展速度最快的国产品牌之中的一个.早在2010年前就開始了海外市场 ...

  4. VC++ WIN32 sdk实现按钮自绘详解 之二.

    网上找了很多,可只是给出代码,没有详细解释,不便初学者理解.我就抄回冷饭.把这个再拿出来说说. 实例图片:    首先建立一个标准的Win32 Application 工程.选择a simple Wi ...

  5. PowerShell 在线教程 4

    PowerShell 在线教程 4   认识Powershell 介绍和安装 自定义控制台 快速编辑模式和标准模式 快捷键 管道和重定向 Powershell交互式 数学运算 执行外部命令 命令集 别 ...

  6. JAVA中IO和NIO的详解分析,内容来自网络和自己总结

    用一个例子来阐释: 一辆客车上有10个乘客,他们的目的地各不相同,当没有售票员的时候,司机就需要不断的询问每一站是否有乘客需要下车,需要则停下,不需要则继续开车,这种就是阻塞的方式. 当有售票员的时候 ...

  7. 关于sizeof的笔试面试题具体解释

    原创Blog,转载请注明处处 http://blog.csdn.net/hello_hwc 注意:sizeof是编译期计算出结果的,这一点对后面的理解非常重要 一.关于结构体 先看下代码 #inclu ...

  8. 第十七篇:实例分析(1)--初探WDDM驱动学习笔记(八)

    第四篇(VidPN)中提到过MIRROR驱动. 在进入本篇的实际内容前, 带着好奇心, 想请教CSDN中的显卡驱动方面的大虾, 怎样才干把这个驱动玩起来, 这个驱动的作用是什么,等等, 敬请不吝赐教. ...

  9. C语言scanf函数详解

    函数名: scanf  功 能: 运行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设 ...

  10. Android显示GIF图片

    今天我们研究一下怎样在Android手机上显示GIF动态图片 首先须要在src文件夹下新建一个自己定义的View.代码例如以下: </pre><pre name="code ...