maven版本仲裁原则

这里有一个案例是项目里依赖了b组件,b组件依赖了a组件1.0.2版本,而用户也直接在pom依赖了a组件并声明的1.0.0版本,结果在仲裁时选择了1.0.0版本的a组件:

 +- com.xxx:a:jar:1.0.0:compile
 |   
 +- ...
 |  +- ...
 |  
 +- com.xxx:b:jar:1.0.0:compile
 |  |  
 |  +- (com.xxx:a:jar:1.0.2:compile - omitted for duplicate)

对于依赖某个组件的多个版本,maven的仲裁过程,并不是简单的使用高版本,而是根据从根节点到各个组件节点之间的路径深度,路径短的组件优先,如果路径深度相同,则是先发现的那个。类似一棵树的广度遍历。

posted @ 2019-04-08 19:38  陶朱公Boy  阅读(1307)  评论(0编辑  收藏  举报