Maven的Dependency测试

贴中得来终觉浅,绝知此事要测试。
没错,今天遇到了一个很2的问题,虽然没影响什么但还是简单测了一下,醍醐灌顶啊。

是这样,有三个项目,Base1,Base2,Base3.
其中1,2都是库用来被其他程序调用的,3是测试项目,专门用来调用别人的。

如果Base2(就一个版本)调用了Base1的1.0版本,Base3(就一个版本)调用了Base2。
此时Base3的pom中添加Base1的1.1版本的dependency会出现什么呢。

代码很简单
Base1
Maven的Dependency测试_第1张图片

Base2
Maven的Dependency测试_第2张图片

Base3
Maven的Dependency测试_第3张图片

此时打印的是
this is 1.1
this is 1.1
this is 1.0 2

结论就是如果当前的版本与之前的有冲突会在当前项目和自己引用的项目都使用被引用项目的最高版本。
我本以为Base2会用Base1的1.0版本,而在Base3中引用Base1的2.0版本Base3打印1.1没问题Base2会不受影响的使用Base1的1.0,太天真了。。
但还是有疑点,Base2当时是install到本地repo中的已经打包好成jar了怎么还能替换掉其中的类呢,可能在打包Base3中如果打包类中有相同的包名会选择最高版本,这个没法测试啊,先按照这个结果记住吧。

你可能感兴趣的:(java,maven,测试)