maven【传递依赖】的版本确定规则

转载 2013年12月06日 10:12:50

maven传递依赖的版本确定规则,也就是对重复的间接依赖的包的选择规则:


  1. 在工程的依赖树上,深度越浅,越被优先选择。如本例中的spring-jms. 由于pom中直接声明了3.0.2版本的spring-jms,所以3.0.2版本的spring-jms在工程的依赖树上处在第一层,而activemq-optional所间接依赖的3.0.3版本的spring-jms则是处在工程依赖树的第二层,则maven会以深度浅者优先,所以最后解析的结果是选择了3.0.2版本的spring-jms。


  2. 若两个依赖包处于依赖树上的同一层,则谁在前,选择谁。如本例中的spring-core.一个是activemq-optional的间接依赖,一个是spring-context的间接依赖,两个依赖都是处在第二层上,但由于是activemq-optional声明在前,所以maven优先选择了activemq-optional所依赖的3.0.3的版本!


  3. 避免传递依赖引起版本问题的最佳实践。现在很多的开源框架和工具都开始分模块打包发布,比如spring,hibernate都是如此,而这些模块之间又有可能存在相关的依赖关系,为了避免出现版本不一致问题,比如上例中出现的spring-jms使用的是3.0.2,而spring-core却使用了3.0.3这种情况,需要我们对一个工程直接依赖的某一框架的多个模块都要做出声明,而不要依赖其内部的依赖关系来间接引入。总结起来就是:一般来说,如果工程直接依赖到某一框架的多个模块,最好全部声明这些依赖。





maven传递依赖的版本确定规则

maven传递依赖的版本确定规则,也就是对重复的间接依赖的包的选择规则:   1. 在工程的依赖树上,深度越浅,越被优先选择。如本例中的spring-jms. 由于pom中直接声明了3....
  • jkguowen
  • jkguowen
  • 2014年10月30日 11:36
  • 474

maven传递依赖规则

场景一: learn-1 pom.xml  org.springframework spring-core 4.1.4.RELEASE ...
  • liuxiao723846
  • liuxiao723846
  • 2016年12月10日 15:20
  • 337

maven依赖范围和依赖传递

compile (编译范围) compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath 中可用,同时它们也会被打包。 provided...
  • u011686226
  • u011686226
  • 2016年12月19日 13:35
  • 1160

在Maven中的继承与依赖传递

1、Maven中的继承  在Maven中,子项目是可以继承父项目中的依赖的,比如说我们有一个父项目maven-parent,该父项目拥有一个子项目A,如果在父项目中依赖了junit,那么在子项目A中即...
  • ZZY1078689276
  • ZZY1078689276
  • 2018年01月03日 21:34
  • 80

Maven管理(依赖范围,依赖传递,依赖冲突,依赖可选,依赖排除)

Maven管理: 1. 依赖范围 maven的依赖范围有4种, 分别是: compile: 对主代码有效,  对测试代码有效,  被打包运行时有效. test:         对主代码无效,  对测...
  • wzx735481897
  • wzx735481897
  • 2017年10月04日 15:44
  • 125

Maven依赖规则和依赖范围

maven传递依赖的版本确定规则,也就是对重复的间接依赖的包的选择规则:   1. 在工程的依赖树上,深度越浅,越被优先选择。如本例中的spring-jms. 由于pom中直接声明了3.0.2版...
  • zz210891470
  • zz210891470
  • 2017年04月11日 00:05
  • 309

Maven 依赖范围、依赖传递、排除依赖

依赖范围 回顾下maven构建坐标的构成,如下 junit junit 3.8.1 test ...
  • sinat_25926481
  • sinat_25926481
  • 2017年08月08日 18:10
  • 977

maven的依赖传递性讲解

在日常项目中经常会碰到maven依赖问题,尤其是碰到类似struts的jar包升级,每一次都要动很多项目,有些间接依赖会导致,为了搞清楚maven整个依赖qing'kuan 原文引用自:http://...
  • elricboa
  • elricboa
  • 2017年04月16日 23:50
  • 2181

[Maven实战](9)传递性依赖

了解Spring的朋友都知道,创建一个Spring Framework项目都需要依赖什么样的Jar包。如果不使用Maven,那么在项目中就需要手动下载相关的依赖。由于Spring Framework又...
  • SunnyYoona
  • SunnyYoona
  • 2016年01月30日 22:26
  • 3454

Maven中包的依赖传递性

1在打包的时候我们都不希望将测试的jar包打包进去, 这个时候我们就要把scope的值设置为test, 而test在Maven中的依赖传递是不会传递的, 所以在每个项目中都应该加入对应的测试依赖...
  • mexican_jacky
  • mexican_jacky
  • 2015年12月11日 21:33
  • 2088
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:maven【传递依赖】的版本确定规则
举报原因:
原因补充:

(最多只允许输入30个字)