使用maven-helper插件解决jar包冲突案例【经典版】

一 mavenHelper插件的介绍安装

目录

一 mavenHelper插件的介绍安装

1.1 介绍

1.2 安装

1.3 helper的使用

二 jar包冲突说明

2.1 说明

2.2  依赖顺序

2.3 解决思路

2.3.1   *排除指定的版本*

2.3.2   子工程显示指定版本

2.3.3   子工程中先排除,后指定版本

2.3.4   锁定版本

三 案例  排除指定版本

3.1 冲突说明

3.2 解决方法

四  案例:子工程指定具体版本

4.1 冲突说明

4.2 排除方法

五  案例  锁定版本*

5.1 冲突说明

5.2 解决方法


1.1 介绍

安装了Maven Helper插件,只要打开pom文件,就可以打开该pom文件的Dependency Analyzer视图(在文件打开之后,文件下面会多出这样一个tab),进入Dependency Analyzer视图之后有三个查看选项,分别是Conflicts(冲突)、All Dependencies as List(列表形式查看所有依赖)、All Dependencies as Tree(树结构查看所有依赖)。并且这个页面还支持搜索。很方便!

1.2 安装

1.在线安装:File-->setting--->Plugins--->在搜索框中填写Maven Helper然后搜索,单击Install按钮进行安装,装完重启IDE。

2.离线安装:点击“Plugins”->“Marketplace”->输入"mavn helper"->点击“install”->点击“OK”完成安装

1.3 helper的使用

1.当Maven Helper 插件安装成功后,打开项目中的pom文件,下面就会多出一个视图

2.helper的界面

打开pom文件,并可以切换tab,简单使用,如下图:

Conflicts(查看冲突)
All Dependencies as List(列表形式查看所有依赖)
All Dependencies as Tree(树形式查看所有依赖)
当前界面上还提供搜索功能 方便使用

二 jar包冲突说明

2.1 说明

首先,解决idea中jar包冲突,使用maven的插件:maven helper插件,它能够给我们罗列出来同一个jar包的不同版本,以及他们的来源,但是对不同jar包中同名的类没有办法。

2.2  依赖顺序

1.点击【All Dependencies as Tree】,查看:从上向下,A依赖于B,B依赖于C;starter依赖core,core依赖api

2.点击【Conflicts】,从图中可以看出有哪些jar存在冲突,存在冲突的情况下最终采用了哪个依赖的版本。标红的就是冲突版本,白色的是当前的解析版本。这个选项,需要从下向上看;

A依赖于B,B依赖于C,如下图:冲突的jar包就是dpscn-apass-oltp-plugin-api

2.3 解决思路

2.3.1   *排除指定的版本*

思想:如果有两个依赖的版本发生了冲突,那么只要把其中一个依赖给排除掉,只剩下一个依赖,那么自然就可以解决冲突的问题。我们只需要使用exclusion关键字对相关依赖进行排除就行

1.这里可以看到 spirng-beans-4.2.4.release和spring-beans-5.0.12冲突,这里舍弃spirng-beans-4.2.4.release这个版本,保留spring-beans-5.0.12 这个版本。使用 exclusion 排除定位到的冲突包。

2.在4.2.4版本侧选中【exclude】

3.查看pom依赖,刷新pom后

4.再次点击【conflicts】,可以看到关于spring-beans的冲突已经没有,现在使用的是spring-beans-5.0.12这个版本

2.3.2   在子工程中指定版本号

 显示单独声明使用依赖的版本

2.3.3   子工程中先排除,后指定版本号

如下图,在starter-web中排除spring-webmvc,然后指定spring-webmvc的版本为6.0.9。

2.3.4   锁定版本

方案4:锁定版本,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。

这里要注意两点,版本锁定和【使用路径优先原则不同,使用路径优先原则,是实实在在地将jar包给引入到pom文件中】,而版本锁定只是规定了要使用的版本号,只有真实用到了相关的依赖,才生效。同时,版本锁定可以更集中地约束和规定依赖版本,这种优势是其他方法所不能达到的。
当然了,如果只是简单的小型项目,使用其他方式可能是更好的解决方法。

https://www.cnblogs.com/moutory/p/17752823.html

三 案例  排除指定版本

3.1 冲突说明

1.冲突依赖描述

  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.2.4.RELEASE</version>
      <exclusions>
        <exclusion>
          <artifactId>spring-beans</artifactId>
          <groupId>org.springframework</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.0.12.RELEASE</version>
    </dependency>

2.说明:从下向上看

spring-aop 版本5.0.12版本

spring-webmvc4.2.4 依赖于spring-contenxt 4.2.4,spring-contenxt 4.2.4依赖于spring-aop4.2.4 版本;

spring-webmvc4.2.4 依赖于spring-web 4.2.4,spring-web-4.2.4依赖于spring-aop4.2.4 版本

冲突版本:spring-aop:5.0.12 和spring-aop4.2.4 冲突

3.2 解决方法

排除掉spring-aop4.2.4这个版本,保留spring-aop:5.0.12 这个版本

查看maven坐标:在4.2.4-spirng-webmvc排除掉spring-aop4.2.4版本,刷新pom,重新拉包,如图

4.查看冲突已解决:再次点击【conflicts】查看aop的冲突已经没有了

四  案例:子工程指定具体版本

4.1 冲突说明

4.2 排除方法

在父工程中的pom文件中声明冲突依赖的具体版本。如图,这里指定:dpsn-appas-oltp-plugin-api的版本为1.0.0

五  案例  锁定版本*

5.1 冲突说明

锁定版本,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。

这里在父工程的pom里面<dependecyManagement>中的<dependencies>标签中,指定使用版本

<dependency>
  <groupId>com.pab.dpscn</groupId>
  <artifactId>corebankpulltest-message</artifactId>
  <version>1.0.0-dev-test-SNAPSHOT</version>
</dependency>

详情见下图

5.2 解决方法

1.这里查看依赖要从上向下看:可以看到:

Clearingledger-ledger-1.0.0-snapshot依赖于Clearingledger-ledger-facade-1.0.0-snapshot

Clearingledger-ledger-facade-1.0.0-snapshot依赖于corebankpulltest-message-1.0.0-dev-snapshot

冲突版本为:corebankpulltest-message-1.0.0-dev-snapshot和corebankpulltest-message-1.0.0-dev-test-snapshot版本

2.解决办法:在父工程的dependencyManagement标签中锁定版本使用corebankpulltest-message:1.0.0-dev-test-snapshot版本

六  案例  删除制定的版本

6.1 冲突说明

6.2 解决办法

 在工程中搜索【extension-encryption-api】,可以看到pom中指定了具体版本,和底座管控的版本冲突,这里将指定的版本进行注释掉,使用底座管控的版本。

  • 27
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值