文档章节

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

猪刚烈
 猪刚烈
发布于 2014/10/12 11:40
字数 432
阅读 27
收藏 0
点赞 1
评论 0

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这种情况,需要我们对一个工程直接依赖的某一框架的多个模块都要做出声明,而不要依赖其内部的依赖关系来间接引入。总结起来就昌:一般来说,如果工程直接依赖到某一框架的多个模块,最好全部声明这些依赖。

本文转载自:http://blog.csdn.net/bluishglc/article/details/6584678

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
Maven3坐标与依赖

坐标 Maven的坐标用来唯一标示一个项目在Maven仓库的位置,Maven的坐标主要由groupId、artifactId、version、packaging、classifier 5个元素组成,其中groupId、artifactId、version是必要的...

casoc ⋅ 2015/10/04 ⋅ 0

Maven坐标和依赖(三)

接下来介绍一下Maven的坐标和依赖。 1. Maven坐标 依赖的底层基础就是坐标。在实际生活中我们可以将地址看成一种坐标。而Maven为构件引入坐标的概念。以前当我们需要Spring Framework依赖的时...

半夏alvin ⋅ 2013/11/25 ⋅ 0

Gradle学习(二十五)——依赖管理术语

依赖管理有大量的术语,为了方便理解整个依赖管理的过程,我们先要理解一下相关的术语 配置 配置是一组实现特殊目的的依赖项集合:比如配置表示编译项目的一组依赖集合。配置可以访问底层的已...

lastsweetop ⋅ 04/08 ⋅ 0

Maven依赖分析

来自官网 背景 昨天帮一位同事排查了一个依赖冲突的问题。问题的现象就是在IntelliJ IDEA运行项目正常,但是打包(Maven assembly jar)之后传到服务器运行失败,报错:。 后来定位到某个类存...

金珑 ⋅ 2017/11/24 ⋅ 0

《Maven权威指南》学习笔记二十_关于POM

英文:Project Object Model;中文:项目对象模型。 项目版本 主版本.次版本.增量版本.限定版本号: <major version>.<minor version>.<incremental version>-<qualifier>一个版本“5”只有主......

SimpleClean ⋅ 2013/04/10 ⋅ 0

maven 全局排除jar包

大多数java应用源码构建和依赖管理是使用maven来实现的,我们的应用系统也都是基于maven构建的,maven虽然在依赖管理方面确实很便捷,但是也发现也有"死角",它并不能很好地解决所有依赖的问...

钟声已经敲响 ⋅ 2016/12/04 ⋅ 1

带你深度解析Maven

一、What`s Maven?   Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具,简单的说就是用来管理项目所...

hafiz.zhang ⋅ 2017/12/27 ⋅ 0

POM文件配置解析

pom.xml:maven项目的核心,定义了项目的基本信息,用于描述项目如何构建,声明项目的依赖,等等。 下面一步步解析pom.xml文件的相关配置。 如图: project:是pom.xml的根元素,声明了POM相...

皮蛋瘦肉粥里没有粥 ⋅ 2016/03/16 ⋅ 1

Maven的pom文件那些事

pom.xml文件 以上的配置会获得一个-.格式的包//nexus-indexer-2.0.0.jar jdk7//用于定义构建输出的一些附属的构建。classifier是不能直接定义的,只能存在附加的构件(插件)时,才能(必须)...

GarfieldEr007 ⋅ 01/14 ⋅ 0

私服release库和snapshot库的正确使用方式

伙伴们,有没有遇到过这种场景: 小明:“新需求开发完了,马上要上线,先在j-one中打个包测试一下吧~!“ 编译完成后,部署测试环境,“纳尼!测试环境起不来了,我开发环境正常啊!什么情况...

新栋BOOK ⋅ 2016/11/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 14分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 20分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 25分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 26分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 30分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 34分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 47分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 今天 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部