maven依赖传递原则

大多数公司的大多数项目都会遇到jar包冲突问题,几乎所有的jar包冲突都与依赖传递有关,那么我们先来看看maven中的依赖传递有哪些原则:

原则一:最短路径优先原则

假如你的项目引入了2个Jar包A和B,A和B都传递依赖了Z这个Jar包:

A -> X -> Y -> Z(2.5)

B -> X -> Z(2.0)

那么,项目中最终生效的是Z(2.0)这个版本,因为它的路径更短。如果此时我在项目中直接引用了Z(3.0)的包,那么生效的就是3.0的版本,这是一样的道理。

举例:

项目依赖的包版本:

1.7.5:有5个依赖层级

1.9.2:有4个依赖层级,路径更短

maven依赖传递原则_第1张图片

maven package后,查看实际使用的包版本:

maven依赖传递原则_第2张图片

原则二:最先声明优先原则

如果项目中两个版本的Jar包路径长度一样,优先选最先声明的那个。

A -> Z(3.0)

B -> Z(2.5)

这里项目中是先引入了A这个Jar包,所以传递过来的Z就会引入3.0这个版本。

举例:

项目依赖的包版本:

2.14.2:有4个层级

2.9.4:同样有4个层级,但2.14.2在2.9.4之前声明

maven依赖传递原则_第3张图片

maven package后,查看实际使用的包版本:

maven依赖传递原则_第4张图片

怎么看最终生效的是哪个版本呢?

可以在项目中执行package命令,命令完成后会在/target下面生成发布包,在发布包中找到lib文件夹,这个文件夹下面就是项目依赖的所有jar包了。

maven依赖传递原则_第5张图片

maven依赖传递原则_第6张图片

更多精彩内容:https://codernav.com

maven依赖传递原则_第7张图片

你可能感兴趣的:(maven,python,pycharm)