dbcp3个jar包_idea 中解决maven 包冲突的问题

25a8425326cdac98009210d57d2cab47.png

出处:https://blog.csdn.net/fnwibwj/article/details/81709733

一.冲突问题

比如项目中引用了两个 fastjson.jar的版本,分别为

fastjson:1.2.28

fastjson:1.2.3

我们用到了1.2.28中的某个类, 比如 A类,在版本更新中 1.2.3版本去掉了这个类,然而我们项目中maven 却把1.2.3的 jar 打包进去了,那我们就会报异常,不存在这个 class,但是我们调错误的时候却发现这个类存在,那我们怎么找到问题根源呢,到底是哪个包的需要Exclude 呢?

idea 中查看 maven 依赖只会给你一个复杂到极点图,基本没有啥价值,所以要安装个插件 maven helper

二.解决问题

(1)首先安装插件 maven helper(因为我已经安装了,所以没 install 的按钮了)

633014282bb5479376fc0ca52a7ea42e.png

(2)安装完成后,在 pom 文件下方会出现这个东西

d287281d94d193da2710671b75c863c3.png

(3)点进去你会发现仿佛回到了 eclipse

80ba627cbd336df47ab4972f34f75f37.png

(4)接下来到重点了,选中冲突选项 conflicts,这一列都是存在冲突的包

dd05d72dda1d05aef8ee2ddcef945fc3.png

(5)以fastjson 为例

5636911b8cfda8a1a339e3eb4d9eb117.png

(6)当然我们调错误的时候也可以直接搜索有问题的包,如下 

0e228d846c5ba7dde92883cea8c7b67d.png

(7)选中右键就可以 Exclude 啦,想用1.2.28就把其他版本的Exclude掉,想用1.2.3就把其他版本的Exclude掉,是不是很方便。

63bb33b7b2e6c4f0b18762d4babdc388.png

三.锁定jar版本

面对众多的依赖,有一种方法不用考虑依赖路径、声明优化等因素可以采用直接锁定版本的方法确定依赖构件的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本的为准添加到工程中,此方法在企业开发中常用。

如下的配置是锁定了spring-beans和spring-context的版本

<dependencyManagement>
    <dependencies>
      
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-beansartifactId>
        <version>4.2.4.RELEASEversion>
      dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>4.2.4.RELEASEversion>
      dependency>
    dependencies>
  dependencyManagement>

注意:在工程中锁定依赖的版本并不代表在工程中添加了依赖,如果工程需要添加锁定版本的依赖则需要单独添加标签,如下:

<dependency><groupId>org.springframeworkgroupId><artifactId>spring-beansartifactId>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-contextartifactId>dependency>dependencies>

上边添加的依赖并没有指定版本,原因是已在中锁定了版本,所以在下不需要再指定版本。

1f54d1fe48a1b6d30d03fbe30d34fc48.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值