JAVA中依赖冲突原因解析以及解决思路

1.依赖冲突原因详解

依赖冲突的根源是Maven的依赖机制会导致Jar包的冲突。举个栗子,在我们目前的项目中使用了A和B两个Jar包,A包在依赖中依赖了C包,而B包在依赖中也同时依赖了C包,但是A包依赖的C的版本的1.0,B依赖C包的版本是2.0。此时,我们的项目中就出现了1.0.和2.0两个版本的C包,此时Maven会依赖路径最短优先原则,来决定使用哪个版本的Jar包,而另外一个无用的Jar包则未被使用,这就是所谓的依赖冲突

在大多数的时候,依赖冲突并不会对系统造成异常,因为Maven始终会选择一个Jar包来使用,但是在特定的情况下因为Jar包版本不同会造成找不到类的异常,如果存在依赖冲突最好解决掉,不要给系统留下隐患。

2.依赖冲突解决方法

解决依赖冲突的方法就是使用Maven提供的标签

<exclusions>
      <exclusion>
          <groupId></groupId>
          <artifactId></artifactId>
      </exclusion>
</exclusions>

实例:

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-core</artifactId>
   <version>${spring.version}</version>
   <exclusions>
     <exclusion>
       <artifactId>commons-logging</artifactId>
       <groupId>commons-logging</groupId>
     </exclusion>
   </exclusions>
</dependency>

我们是用标签排除掉了spring-core所依赖的commons-logging,这样Maven就不会下载spring-core中所依赖的commons-logging,也就保证了我们项目只有一个commons-logging

3.使用IDEA中插件查看依赖冲突

IDEA提供了项目的依赖树可以供我们查看项目中Jar的依赖情况

查看项目依赖树

红色的线是目前有依赖冲突的Jar,可以根据依赖树来排查项目中存在的依赖冲突问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值