问题描述:
项目在升级大版本后出现了,两个不同模块所引用的同一个依赖包版本不同
module A 引用了 module B,module B 引用了 A_1.0.jar->B_1.0.jar->C_1.0.jar(C 为B 里面的包)
在执行 mvn dependency:tree 后发现:
moduleA 引用的包为:module B.jar->A_1.0.jar->B_1.0.jar->C_2.0.jar
moduleB 引用的包为:A_1.0.jar->B_1.0.jar->C_1.0.jar
排查后发现:A_1.0.jar 在 dependencyManagement 中 指定了 C 的版本为 C_1.0
而 moduleA 在引入moduleB.jar 同时也直接引入了 B_1.0.jar,所以在moduleA中出现下面的层级:
B_1.0.jar->C.2.0.jar
module B.jar->A_1.0.jar->B_1.0.jar->C_1.0.jar
根据maven 的路径最短 自动选择了 C_2.0.jar 这个版本 导致不一致;
解决办法:
在项目的最外层的父项目的 pom 的 dependencyManagement 添加了 C_1.0.jar, 让项目中 C的版本统一了。