maven出现jar包冲突现象如何解决:

现象:

假设:spring-core:5.0.2项目正确

spring-core:4.2.4项目出错

创建一个maven工程:
maven出现jar包冲突现象如何解决

maven工程创建完毕后

先导入一个spring-context,注意观察此时spring-core:5.0.2
maven出现jar包冲突现象如何解决

再次导入spring-beans,此时spring-core:4.2.4,出错
maven出现jar包冲突现象如何解决

原因:

导入的两个maven坐标对依赖的maven坐标产生影响。比如spring-context,spring-beans都会对spring-core产生影响,spring-core会根据不同情况产生不同的坐标,因后导入maven坐标影响了正常的项目坐标,产生报错。

解决问题:

1、第一声明者优先原则

观察:坐标位置

导入spring-beans,此时spring-core:4.2.4,出错
maven出现jar包冲突现象如何解决

两者颠倒位置后:spring-core:5.0.2,正确了
maven出现jar包冲突现象如何解决

只要明确你想要的位置即可:谁在前引用谁的坐标依赖

缺点:1.坐标位置固定不灵活2.引入坐标需要明白其依赖的坐标具体关系

2、路径近者优先原则

观察:坐标位置

导入spring-beans,此时spring-core:4.2.4,出错
maven出现jar包冲突现象如何解决

添加了spring-core的直接依赖,spring-core:5.0.2,正确了
maven出现jar包冲突现象如何解决

缺点:坐标数目会变多

3、排除依赖

观察:坐标位置

导入spring-beans,此时spring-core:4.2.4,出错
maven出现jar包冲突现象如何解决

直接排除,此时spring-core:5.0.2,正确
maven出现jar包冲突现象如何解决

缺点:坐标数目变多

4、锁定版本

面对众多的依赖,有一种方法不用考虑依赖路径、声明优化等因素可以采用直接锁定版
本的方法确定依赖构件的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定
的版本的为准添加到工程中,此方法在企业开发中常用。
由三大部分构成:

properties: 统一管理jar包版本
maven出现jar包冲突现象如何解决

dependencyManagement:锁定jar包版本
maven出现jar包冲突现象如何解决

dependecy:项目管理jar包
maven出现jar包冲突现象如何解决

解决了上述所有的缺点,便于扩展

相关文章: