依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突
项目依赖了A,A依赖了B,项目自动依赖了B
注意:父项目中的依赖有
依赖冲突很经常是类包之间的间接依赖引起的,每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,从而造成类包冲突
一般maven会自动通过第一声明者优先和就近原则解决冲突
如果不行,首先查看产生依赖冲突的类jar,其次找出我们不想要的依赖类jar,可以手动排除,锁定版本等
1.安装Maven Helper插件

2.命令行 mvn -Dverbose dependency:tree
1.第一声明者优先原则
在pom文件定义依赖,先声明的依赖为准
2.就近原则
A 依赖spring-beans-4.2.4, A 依赖B依赖spring-beans-3.0.5,则spring-beans-4.2.4优先被依赖在A中,因为spring-beans-4.2.4相对spirng-beans-3.0.5被A依赖的路径最近
3.排除依赖
- <dependency>
- <groupId>org.apache.strutsgroupId>
- <artifactId>struts2-spring-pluginartifactId>
- <version>2.3.24version>
-
- <exclusions>
- <exclusion>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-beansartifactId>
- exclusion>
- exclusions>
- dependency>
4.锁定版本 通过dependencyManagement锁定库的版本
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-jdbcartifactId>
- <version>5.2.5.RELEASEversion>
- dependency>
- dependencies>
- dependencyManagement>
- <dependencies>
-
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-jdbcartifactId>
- dependency>
- dependencies>
5.提取版本号 统一版本号解决
- <properties>
- <mybatisplus.version>2.1.3mybatisplus.version>
- properties>
- <dependencies>
- <dependency>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plusartifactId>
- <version>${mybatisplus.version}version>
- dependency>
- dependencies>