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

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

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

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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

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

Maven依赖管理的规则

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

maven依赖的版本管理

使用变量进行管理定义一个版本号的变量 4.3.7.REALEASE 所有spring的jar版本都使用变量来定义版本: org.springframework <art

配置maven下载jar包源码文件、拷贝依赖jar到lib包、设置编译时jdk版本、根据不同环境采用不同配置

1.调试工程的时候,有时候要追踪源码文件 使用maven命令:mvn dependency:sources 下载依赖包的源代码。 或者 mvn dependency:sources -Ddown...

查lib下的jar来自哪个maven依赖(通过用于解决jar版本冲突)

选中项目,右键->run as ,选择maven build ...,然后在对话框中的Goals项填入" dependency:tree",再在"debug output"打上勾,并将此项启动的名字改...

如何更好的管理maven依赖包的版本

1、如果你的pom.xml 文件内有很多相同的groupId(这现象spring等大型框架非常常见),你应该用pom中的properties部分,然后引用它们。 比如: UTF-8 UT...

AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(二)

AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(二) 前提 Nexus已搭建好maven私服,以下带**的地方是需要自...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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