maven依赖版本冲突如何处理
作者:百万彩票中奖候选人
文章主要介绍了Maven依赖版本冲突的原因以及如何处理版本冲突的方法,包括使用exclusions排除依赖和使用dependencyManagement锁定版本号
maven依赖版本冲突处理
maven依赖版本冲突一般是由于间接依赖导致一个jar包有多个不同的版本,
比如:A依赖了B的1.0版本,C依赖了B的2.0版本,项目依赖A和C从而间接依赖了B的1.0和2.0版本,此时B有两个版本引入到了项目中,当存在版本冲突时可能会出现ClassNotFoundException、NoSuchMethodError等错误。
处理版本冲突可以使用以下方法:
方法1 : 使用 exclusions 排除依赖
比如:我们只依赖B的1.0版本,此时可以在依赖C时排除对B的依赖
<!-- 排除 Spring Boot 依赖的日志包冲突 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>方法2 : 使用 dependencyManagement 锁定版本号
通常在父工程对依赖的版本统一管理。
比如:我们只依赖B的1.0版本,此时可以在父工程中限定B的版本为1.0.
<packaging>pom</packaging>
<properties>
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
