关闭

Maven DependencyManagement

153人阅读 评论(0) 收藏 举报

这里介绍一个在父项目中的根结点中声明dependencyManagement和dependencies的区别

dependencyManagement

Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能让
所有在子项目中引用一个依赖而不用显式的列出版本号。Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用在这个dependencyManagement 元素中指定的版本号。

 

例如在父项目里:

Xml代码  收藏代码
  1. <dependencyManagement>  
  2. <dependencies>  
  3. <dependency>  
  4. <groupId>mysql</groupId>  
  5. <artifactId>mysql-connector-java</artifactId>  
  6. <version>5.1.2</version>  
  7. </dependency>  
  8. ...  
  9. <dependencies>  
  10. </dependencyManagement>  

然后在子项目里就可以添加mysql-connector时可以不指定版本号,例如:

 

Xml代码  收藏代码
  1. <dependencies>  
  2. <dependency>  
  3. <groupId>mysql</groupId>  
  4. <artifactId>mysql-connector-java</artifactId>  
  5. </dependency>  
  6. </dependencies>  

这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;另外如果某个子项目需要另外的一个版本,只需要声明version就可。

 

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。

dependencies

相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

 

classifier

如果你要发布同样的代码,但是由于技术原因需要生成两个单独的构件,你就要使用一个分类器(classifier)。例如,如果你想要构建两个单独的构件成JAR,一个使用Java 1.4 编译器,另一个使用Java 6 编译器,你就可以使用分类器
来生成两个单独的JAR构件,它们有同样的groupId:artifactId:version组合。如果你的项目使用本地扩展类库,你可以使用分类器为每一个目标平台生成一个构件。分类器常用于打包构件的源码,JavaDoc 或者二进制集合。


转自:http://liugang594.iteye.com/blog/1687781

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

maven多模块和继承

maven具有多模块聚合功能,即可以以父子关系体现模块间的关系,并关联各模块。 首先介绍一下具有继承依赖关系模块(多个模块不仅与公共模块关联,彼此间也存在相互依赖的关系)。 父模块的定义:...
  • mafan121
  • mafan121
  • 2016-01-07 19:13
  • 3147

spring-boot中关于Maven依赖管理的一个问题

背景: 今天在使用spring boot集成redis的时候,发现一个现象对于spring boot的其他pom依赖都可以不配置version版本号 org.springframewo...
  • onedaycbfly
  • onedaycbfly
  • 2017-12-28 23:33
  • 49

使用import scope解决maven继承(单)问题

测试环境 maven 3.3.9 想必大家在做SpringBoot应用的时候,都会有如下代码: [html] view plain copy   parent>       .....
  • u011686226
  • u011686226
  • 2017-03-05 17:13
  • 690

maven依赖的版本管理

使用变量进行管理 定义一个版本号的变量 4.3.7.REALEASE 所有spring的jar版本都使用变量来定义版本: org.springframework spring...
  • hj7jay
  • hj7jay
  • 2017-03-08 09:35
  • 614

Maven学习记录(四)--多模块开发配置

多模块的好处就是协同开发,对于大的项目这样分工可以提高效率,同时减轻代码耦合,看起来也一目了然,maven多模块还解决了不同人开发使用的架包版本冲突等问题一.创建项目1.创建父级容器不要使用模板,直接...
  • u012706811
  • u012706811
  • 2016-06-02 22:40
  • 4051

使用import scope解决maven继承(单)问题

测试环境 maven 3.3.9 想必大家在做SpringBoot应用的时候,都会有如下代码: org.springframework.boot spring-boot-starter-...
  • mn960mn
  • mn960mn
  • 2016-03-15 11:28
  • 11584

spring boot在maven下的多模块打包

spring boot在maven下的多模块打包,踩了很多坑,现在记录如下。  项目目录:  - 项目 P  - 模块 A  - 模块 B  - 公有基础模块 C  - Mybatis基础...
  • zhang_yinan
  • zhang_yinan
  • 2017-11-10 14:24
  • 189

强制统一引入的依赖管理BOM

Maven Spring BOM (bill of materials) 为了防止用Maven管理Spring项目时,不同的项目依赖了不同版本的Spring,可以使用Maven BOM来解决...
  • wynwdblh
  • wynwdblh
  • 2017-05-13 23:33
  • 220

Mavan依赖冲突的解决办法

maven的传递依赖调节原则 第一声明者优先原则、路径近者优先原则 排除依赖exclude 版本锁定dependencyManagement
  • qq_33349750
  • qq_33349750
  • 2017-07-19 23:00
  • 142

Maven本地环境搭建

Maven本地环境搭建      转自:http://www.cnblogs.com/quanyongan/archive/2013/04/17/3025971.html 安装 Maven 之前...
  • yueguanyun
  • yueguanyun
  • 2017-02-09 17:27
  • 981
    个人资料
    • 访问:273941次
    • 积分:3537
    • 等级:
    • 排名:第10865名
    • 原创:79篇
    • 转载:176篇
    • 译文:0篇
    • 评论:35条