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.0.2版本的sprin...

解决maven传递依赖中的版本冲突

搭建项目的出现了jsp页面报了一个很莫名其妙的错误,咋一看好像是将JSP编译成Servlet产生了错误,类不匹配,怀疑可能是JSTL,Servlet和Tomcat版本产生了冲突。在回想下,我并没有改动...

Maven依赖管理的规则

硬依赖  指的就是必须由本模块来引入的依赖  传递依赖  当引入其它模块时,由于其它模块中已经有了某些jar包的依赖了,将自动把依赖关系导入到本模块  如,A模块已经配置了对hibernate...
  • gadbee5
  • gadbee5
  • 2014年04月11日 17:52
  • 435

Maven依赖规则和依赖范围

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

MAVEN发布固定版本(不需要更改pom更新依赖的方法) -- 自动更新SNAPSHOT

maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模...
  • JIESA
  • JIESA
  • 2015年09月16日 19:05
  • 7647

Maven:更改项目依赖jdk的版本

前言: 在创建项目和导入Maven项目,会有项目jdk版本的问题,如下图所示,每次出现的是1.5版本: 解决的办法有2种:一种是在本项目pom下,添加如下内容: ...
  • wulunbi
  • wulunbi
  • 2015年12月30日 15:53
  • 2087

关于maven自动处理版本冲突的原则和调整依赖的方法

使用pom.xml文件添加dependecy(依赖)的时候,虽然,我们定义的dependecy不可能存在同一个依赖有两个版本,但是由于依赖还会引用别的依赖,这个时候就会有依赖冲突的情况出现。比如我们的...
  • xiehmlj
  • xiehmlj
  • 2017年07月12日 09:45
  • 321

如何使用github自制Android library开源依赖。可以生成gradle、maven、sbt、leigingen等版本

Android开发朋友们的福利呀!! 我们在Android开发过程中,少不了使用别人的第三方库,如:compile 'com.lovedise:permissiongen:0.0.6'。这个放在我...

MAVEN发布固定版本(不需要更改pom更新依赖的方法) -- 自动更新SNAPSHOT

接触Maven有几年时间了,不得不说,它是个好东西,一旦接触之后就有种爱不释手的感觉。  最近在开发中遇到一个疑问,开发阶段的依赖中往往更改一小丁点东西都需要升级版本发布,十分繁琐。  对此查...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:maven【传递依赖】的版本确定规则
举报原因:
原因补充:

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