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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值