依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突
一.maven命令
mvn -Dverbose dependency:tree
其中omitted for duplicate表示有jar包被重复依赖,最后写着omitted for conflict with xxx的,说明和别的jar包版本冲突了,而该行的jar包不会被引入。
omitted for conflict with 5.2.7.RELEASE,表示spring-core 5.2.0版本不会被项目引用,而spring-core 5.2.7版本会被项目引用
二、idea 插件
maven helper插件来检查依赖冲突
点开pom.xml会发现多了一个Dependency Analyzer视图
三、解决方法
a、使用第一声明者优先原则
谁先定义的就用谁的传递依赖,即在pom.xml文件自上而下,先声明的jar坐标,就先引用该jar的传递依赖、
b、使用路径近者优先原则
即直接依赖级别高于传递依赖
c、排除依赖
<exclusions>
<exclusion>
<artifactId>spring-core</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
d、版本锁定
使用dependencyManagement 进行版本锁定,dependencyManagement可以统一管理项目的版本号,确保应用的各个项目的依赖和版本一致。