如何使用maven-helper插件解决jar包冲突问题

 更新时间:2024年05月22日 11:02:31   作者:健康平安的活着  
安装了Maven Helper插件,只要打开pom文件,就可以打开该pom文件的Dependency Analyzer视图,这篇文章主要介绍了使用maven-helper插件解决jar包冲突,需要的朋友可以参考下

一 mavenHelper插件的介绍安装

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.jb51.net/program/318190efu.htm

三 案例

排除指定版本

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-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版本

到此这篇关于使用maven-helper插件解决jar包冲突的文章就介绍到这了,更多相关maven-helper插件解决jar包冲突内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java四种访问控制修饰符知识点总结

    Java四种访问控制修饰符知识点总结

    本篇文章给大家详细分析了Java四种访问控制修饰符的相关知识点,有兴趣的朋友可以参考学习下。
    2018-03-03
  • Java判断当前日期是周几的方法汇总

    Java判断当前日期是周几的方法汇总

    在Java编程中,我们经常会遇到需要获取当前日期是周几的需求。根据国际惯例,一周通常是从周一开始,到周日结束,记作1至7,本文将介绍几种常用的Java方法,让你能够准确地判断当前日期是周几,感兴趣的朋友一起看看吧
    2024-03-03
  • maven中添加memcached.jar的配置步骤

    maven中添加memcached.jar的配置步骤

    在Java项目中使用Maven管理依赖时,如果需要添加​​memcached.jar​​依赖,可以通过本文介绍的步骤进行配置,文章通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-12-12
  • springboot 通过代码自动生成pid的方法

    springboot 通过代码自动生成pid的方法

    这篇文章主要介绍了springboot 通过代码自动生成pid的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • mybatisplus 复合主键(多主键) CRUD示例详解

    mybatisplus 复合主键(多主键) CRUD示例详解

    这篇文章主要介绍了mybatisplus 复合主键(多主键) CRUD实例详解,本文通过实例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Java事件机制要素及实例详解

    Java事件机制要素及实例详解

    这篇文章主要介绍了Java事件机制要素及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • springboot中使用Feign整合nacos,gateway进行微服务之间的调用方法

    springboot中使用Feign整合nacos,gateway进行微服务之间的调用方法

    这篇文章主要介绍了springboot中使用Feign整合nacos,gateway进行微服务之间的调用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • SpringCloud Ribbon负载均衡流程分析

    SpringCloud Ribbon负载均衡流程分析

    在Eureka注册中心中我们在添加完@LoadBalanced注解,即可实现负载均衡功能,现在一起探索一下负载均衡的原理(Ribbon),感兴趣的朋友一起看看吧
    2024-03-03
  • Maven打包跳过测试的实现方法

    Maven打包跳过测试的实现方法

    使用Maven打包的时候,可能会因为单元测试打包失败,这时候就需要跳过单元测试。本文就介绍了Maven打包跳过测试的实现方法,感兴趣的可以了解一下
    2021-06-06
  • 详解IDEA社区版(Community)和付费版(UItimate)的区别

    详解IDEA社区版(Community)和付费版(UItimate)的区别

    这篇文章主要介绍了详解IDEA社区版(Community)和付费版(UItimate)的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11

最新评论