SpringBoot
Maven补充
依赖冲突
什么是依赖冲突
场景:
- spring-webmvc、spring-jdbc 都依赖 spring-beans
- spring-webmvc 的版本是5.2.8,那么它依赖的 spring-beans 的版本也是5.2.8
- spring-jdbc 的版本是5.2.6,那么它依赖的 spring-beans 的版本也是5.2.6
如果 spring-jdbc 和 spring-webmvc 放到一起,那么就会出现两个版本的 spring-beans ,这样就产生了依赖冲突,那么久需要想办法只保留一个版本的 spring-beans
依赖冲突的解决方案①
默认情况下,优先保留前面先声明的版本
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
复制代码
依赖冲突的解决方案②
单独为依赖库添加 dependency 指定版本
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
复制代码
依赖冲突的解决方案③
使用 exclusion 排除某个依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
复制代码
依赖冲突的解决方案④(推荐)
使用 dependencyManagement 锁定依赖库的版本号
- 注意: dependencyManagement 只是声明版本号,并不会触发下载依赖导入依赖库
<dependencyManagement>
<dependencies>