maven 冲突发生的原因和解决冲突的方法 随记

在maven打包时经常遇到 类似这样的错误Caused by: java.lang.ClassNotFoundException

maven在一般情况下会自己解决冲突,解决冲突的依据是

  1. 就近原则
    A <- B <- C(2.0),A <- C(1.1)。
    A依赖B B依赖于C A依赖于C
    上面这种情况是maven会选择于
    C(1.1)这个jar

  2. 谁在上面选谁
    在这里插入图片描述
    上面这种情况maven会选择2.7.8这个版本

需要我们手动解决的冲突

A <- B <- C<- D(2.0),A <- B<-D(1.1)。
A依赖B B依赖于C A依赖于C
上面这种情况是maven会自己选择于
D(1.1)这个jar

类似于这种情况C用到的类正好D(1.1)没有 这种情况需要我们自己解决
移除依赖:用于排除某项依赖的依赖jar包
(1)我们可以借助Maven Helper插件中的Dependency Analyzer分析冲突的jar包,然后在对应标红版本的jar包上面点击execlude,就可以将该jar包排除出去
在这里插入图片描述

2)运用maven命令
mvn dependency:tree

在这里插入图片描述

出现上面类似的 自己分析使用下面的标签去排除相应的jar包,一般java保持向后兼容性,我们保留最新的冲突jar就可以的。(一般情况 一般情况 一般情况)

<dependency>
	<groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		<version>1.4.4.RELEASE</version>
		<exclusions>
			<exclusion>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
			</exclusion>
	</exclusions>
</dependency>

猜你喜欢

转载自blog.csdn.net/itlijinping_zhang/article/details/117657082