Maven Jar 加载原则
- 依赖最短路径优先原则
如:a.jar 依赖 b.jar,b.jar 依赖 c.jar, c.jar依赖 d.0.jar;
a.jar 依赖 e.jar,e.jar 依赖 d.1.jar
则:最终依赖d.1.jar
2.pom文件中申明顺序优先
如:a.jar 依赖 d.0.jar ; b.jar 依赖 d.1.jar且 a.jar 依赖在 b.jar 前面
则:最终依赖 d.0.jar
Jar冲突场景
遵循Maven jar加载原则
注:针对同一个jar冲突
本级依赖>本级依赖管理>父级依赖>父级依赖管理>下级依赖
本级依赖优先级冲突
本级依赖环境:后置Jar版本优先级高于前值Jar版本
本级依赖管理和本级依赖冲突
本级依赖环境:后置Jar版本优先级高于前值Jar版本
父级依赖和本级依赖冲突
父级依赖
本级依赖
本级依赖优先级高于父级依赖
本级依赖没有引用,引用父级依赖
本级依赖管理和父级依赖管理冲突
父级依赖
本级没有依赖管理
默认使用父级依赖管理
本级依赖管理
本级依赖管理高于父级依赖管理
本级依赖和下级依赖冲突
本级依赖优先级高于下级依赖存,与依赖jar记载位置无关
下级依赖和下级依赖冲突
先加载的下级依赖高于后加载的下级依赖
父级依赖和下级依赖冲突
父级依赖高于下级依赖
Jar 冲突解决
定义Jar版本管理-dependencyManagement
排除冲突Jar-exclusions
注:使用exclusions比较繁琐,需要所有冲突jar中不同版本排查