百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

maven 处理多版本 jar包依赖冲突

ninehua 2024-12-13 15:33 31 浏览

一。参考文档

https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html

https://maven.apache.org/plugins/maven-dependency-plugin/examples/filtering-the-dependency-tree.html

https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

二。查看 jar 包的间接依赖

1. 如果发现某个 jar 包,自己的 pom 中并没有定义,想看一下是被哪个 jar 包间接引用的,两种方法

(1) 用 mvn dependency:tree>temp/tree.txt, 直接输出到当前项目下,然后在 idea 中打开,搜索要找的 jar 包名字即可.

这里的 "+-" 和 "\-" 并没有什么意义,只是为了让分级看起来更直观

参考:https://stackoverflow.com/questions/34006740/what-is-the-difference-between-and-in-maven-dependency-tree-output

如图,可看到 jline 是在 zookeeper 中被间接引用的

(2) 用 include 参数

H:\下载\新建文件夹\yjg>mvn dependency:tree -Dincludes=jline
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effe
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.pl
[WARNING]
[WARNING] It is highly recommended to fix these problems because
[WARNING]
[WARNING] For this reason, future Maven versions might no longer
[WARNING]
[INFO]
[INFO] ---------------------------------------------------------
[INFO] Building esshop Maven Webapp 0.0.1-SNAPSHOT
[INFO] ---------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ essh
[INFO] esshop:esshop:war:0.0.1-SNAPSHOT
[INFO] \- org.apache.zookeeper:zookeeper:jar:3.3.3:compile
[INFO]    \- jline:jline:jar:0.9.94:compile
[INFO] ---------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ---------------------------------------------------------
[INFO] Total time: 3.256 s
[INFO] Finished at: 2017-12-05T08:57:49+08:00

同样的结果

2. 如果想看冲突和重复的具体情况,用 verbose 参数

如图,用了程序显式定义的版本

H:\下载\新建文件夹\yjg>mvn dependency:tree -Dverbose -Dincludes=commons-collections
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for esshop:esshop:war:0.0.1-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 621,
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building esshop Maven Webapp 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ esshop ---
[INFO] esshop:esshop:war:0.0.1-SNAPSHOT
[INFO] +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] +- org.hibernate:hibernate:jar:3.2.2.ga:compile
[INFO] |  \- (commons-collections:commons-collections:jar:2.1.1:compile - omitted for conflict with 3.2.1)
[INFO] +- org.hibernate:hibernate-annotations:jar:3.4.0.GA:compile
[INFO] |  \- org.hibernate:hibernate-core:jar:3.3.0.SP1:compile
[INFO] |     \- (commons-collections:commons-collections:jar:3.1:compile - omitted for conflict with 3.2.1)
[INFO] +- org.springframework.security:spring-security-core:jar:2.0.4:compile
[INFO] |  \- (commons-collections:commons-collections:jar:3.2:compile - omitted for conflict with 3.2.1)
[INFO] +- org.apache.velocity:velocity:jar:1.5:compile
[INFO] |  \- (commons-collections:commons-collections:jar:3.1:compile - omitted for conflict with 3.2.1)
[INFO] \- net.sf.json-lib:json-lib:jar:jdk15:2.4:compile
[INFO]    \- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for duplicate)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

三。处理 jar 包依赖冲突

简介:处理 jar 包依赖冲突,首先,对于多个 jar 包都引用同一 jar 包的情况,最好是在程序中显式定义被共同引用的 jar 包的依赖,来统一版本号,方便维护

如果 A 和 B 都依赖同一 jar 包 C, 可能会出现两种情况

1.A 和 B 引用的 C 版本相同,这时按照 pom 定义顺序选择第一个即可,没有冲突问题,如果在项目的 maven 中显示定义了 C 依赖,那么用选择项目定义的依赖,反正 version 都一样,没有影响

2.A 和 B 依赖的 C 版本不同,选择版本高的那个,这时会出现两种结果

(1) 高版本兼容低版本,所以不会出现问题

(2) 高版本不兼容低版本,假如 A 依赖 C2 版本,B 依赖 C3 版本,C3 不兼容 C2,maven 选择了高版本 C3, 对 A 来说会出现问题

有 3 种解决方法

  [1] 提升 A 版本,找到依赖 C3 的 A 版本

  [2] 如果 B 版本也可依赖 C2, 在项目的 maven 中显示定义对 C2 的依赖,这样所有都使用 C2 版本

  [3] 如果 B 版本不支持 C2 版本,只能降低 B 版本,找到依赖 C2 的 B 版本

  从功能性和可维护性考虑,高版本提供的功能更多,bug 更少,优先考虑 1

  再考虑 2

  最后考虑 3

相关推荐

VMware ESXI系统镜像定制

为什么要定制ESXi镜像呢?原因很简单,那就是H3C比较老的服务器,比如我用的UISR390XG2服务器,是没有适配的ESXi部署镜像的。而我要部署的H3CloudOS添加节点时只能选择H3C...

最新保姆级、超详细介绍VMware的使用(一)软件的安装

一、VMware简介VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMware采用了完全不同的概...

微软提供免费Windows 11 虚拟机下载

据ZDNet11月23日报道,微软(Microsoft)提供了免费的Windows11企业版虚拟机以供下载。针对开发人员,微软表示,“通过使用带有最新版本的Windows、开发工具、sdk和准备好的...

VMware Workstation Pro 17.5安装包下载安装教程

软件简介VMwareWorkstationPro17.5是一款专业功能最强大的虚拟机软件,用户可以在虚拟机同时运行各种操作系统,进行开发、测试、演示和部署软件,虚拟机中复制服务器、台式机和平板环...

VMware vCenter Server 8.0U3c 发布下载,修复 U3b 更新停止响应的问题

VMwarevCenterServer8.0U3c发布下载,修复U3b更新停止响应的问题VMwarevCenterServer8.0U3c发布下载-集中式管理vSphere...

最新整套VMware Workstation 15 Pro 官方简体中文版 + 永久密钥

VMwareWorkstation是深受全球用户信赖并屡获殊荣的虚拟机软件。它可以在单台PC上运行多个、多平台、多层面的操作系统与应用程序。并且支持快照和克隆,支持物理机与虚拟机间复制、移动,交...

VMware16虚拟机安装教程

系统装机教程也告一段落,接下来秋水给大家讲讲虚拟机的安装,这里呢虚拟机选择VMware。一、安装教程1、在软件官网下载VMware安装包,或者在后台回复获取秋水下载好的安装包。2、双击软件进行安装,并...

VMware虚拟机12.1下载:修复Win10镜像识别错误等问题

IT之家讯12月9日消息,虚拟机软件VMwareWorkstation迎来12.1更新版本,本次更新为维护性更新,修复了之前版本中存在的一些问题,比如将Win10首个重大更新ISO镜像错误识别为W...

VMware vCenter Server 8.0U3b 发布下载,新增功能概览

VMwarevCenterServer8.0U3b发布下载,新增功能概览ServerManagementSoftware|vCenter请访问原文链接:https://sysin.or...

下载VMware虚拟机:打造全能多系统桌面,让IT技术探索触手可及!

VMware虚拟机打造全能多系统桌面,助力IT技术探索在当今科技飞速发展的时代,IT技术正以前所未有的速度渗透到生活和工作的方方面面。无论是智能硬件、移动应用还是云计算服务,都离不开IT技术的支撑。掌...

如何在vmware workstation player虚拟机上安装VMware Tools工具

版本:vmwareworkstation16player&ubuntu64位。首先我们使用vmwareworkstation16player启动ubuntu64位虚拟机,然后点击虚...

VMware与CentOS安装配置指南

以下是一份详细的VMware虚拟机安装、配置及CentOS系统安装配置的指南,适合新手逐步操作:一、VMware虚拟机安装与配置下载并安装VMware下载地址:访问VMware官网,选...

VMware虚拟机与物理机文件交互,这8种方法送给你

上一期我们讲解过用VMWare虚拟机打造一个金刚不坏之身的操作系统,小伙伴们反应说方法不错,只是虚拟机与物理机文件交互方式不好操作,这期应小伙伴们的要求,给大家讲解下虚拟机与物理机文件交互的8种方式,...

VMware 17.0 Pro 版本正式发布,还有适配MacOS 的 Fusion 13 Pro下载

VMware17.0Pro官方下载地址:【点击获取】私聊VMware17.0Pro的新功能特性容器和Kubernetes支持使用vctlCLI构建/运行/拉/推容器映像。支持在Works...

VMware Tools安装失败?手把手教你本地安装

VMwareTools安装失败?作为虚拟机与物理机之间的"桥梁",VMwareTools能实现文件拖拽、剪贴板共享、分辨率自适应等关键功能。没有它,VMware虚拟机就变得非常不好...