maven3实战之坐标和依赖(依赖调解)
-----------
maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什么传递性依赖。但有时候,当传递性依赖造成问题的时候,我们就需要清楚地知道该传递性依赖是从哪条依赖路径引入的。
例如,项目A有这样的依赖关系 : A-->B-->C-->X(1.0)、A-->D-->X(2.0),X是A的传递性依赖,但是两条依赖路径上有两个版本的X,那么哪个X会被maven解析使用呢?两个版本都被解析显然是不对的,因为那会造成依赖重复,因此必须选择一个。maven依赖调解的第一原则:路径最近者优先。该例中X(1.0)的路径长度为3,而X(2.0)的路径长度为2,因此X(2.0)会被解析使用。
依赖调解第一原则不能解决所有问题,比如这样的依赖关系:A-->B-->Y(1.0),A-->C-->Y(2.0),Y(1.0)和Y(2.0)的依赖路径长度是一样的,都为2。那么到底谁会被解析使用呢?在maven2.0.8及之前的版本中,这是不确定的,但是maven2.0.9开始,为了尽可能避免构建的不确定性,maven定义了依赖调解的第二原则:第一声明者优先。在依赖路径长度相等的前提下,在POM中依赖声明的顺序决定了谁会被解析使用。顺序最靠前的那个依赖优胜。
分享到:
相关推荐
Maven3实战笔记05——仓库依赖解析与插件解析。
Maven3_04_maven的依赖特性 Maven3_05_maven的聚合和继承 Maven3_06_复习maven的基本内容 Maven3_07_nexus的介绍和安装 Maven3_08_nexus的配置 Maven3_09_发布项目到nexus中 Maven3_10_生命周期和插件简介 Maven3_11...
Maven3实战
Maven3实战笔记 Maven3实战笔记 Maven3实战笔记 Maven3实战笔记
springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。压缩包3.
Maven3实战笔记(整合)
Maven3实战笔记(全) 从安装配置,到仓库依赖,到集成测试,到插件管理,到构建web 作者风趣幽默的介绍了maven3的使用 强烈推荐
Maven简介,maven与ant比较,windows下安装配置,坐标依赖,仓库,部署第三方构建
一键清理maven仓库中下载失败的依赖包 1.修改path路径,将path路径修改为你的maven仓库存放磁盘的全路径 2.双击运行,即可删除下载失败的jar包 3.运行完毕,按任意键退出即可! 4.正确操作完成退出后,再次打开,会出现...
Maven3实战笔记04——Maven的生命周期和插件。
Maven3实战笔记08——Maven反应堆。
Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清
Java使用Maven导入Spring依赖
Maven实战Maven实战Maven的安装、配置及使用入门
包括slf4j,log4j,mybatis,commons-io,commons-lang及其他commons,以及mail,junit,generator自动生成相关依赖,mysql等全套依赖
Maven实战(基于Maven3).pdf(340页)
Maven3实战笔记10——使用Maven进行测试。
Maven3实战笔记07——继承的介绍。
Maven3实战笔记06——聚合的介绍。
Maven3实战笔记