Maven Pom 文件中的隐式依赖导致Jar冲突

2024-09-05 12:18

本文主要是介绍Maven Pom 文件中的隐式依赖导致Jar冲突,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<span style="font-family:文泉驿等宽微米黑;font-size:14px;line-height:21px">首先在pom.xml中添加:</span><div><pre name="code" class="prettyprint linenums prettyprinted" style="font-size:13px; font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word; background-color:rgb(247,247,249); padding:10px; border:1px solid rgb(225,225,232)"><div class="linenums" style="color:rgb(30,52,123); margin-top:0px; margin-bottom:0px; padding-left:0px"><div class="L0" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="tag" style="color:#0088;"><reporting></span></code></div><div class="L1" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">	</span><span class="tag" style="color:#0088;"><plugins></span></code></div><div class="L2" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">		</span><span class="tag" style="color:#0088;"><plugin></span></code></div><div class="L3" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">			</span><span class="tag" style="color:#0088;"><groupId></span><span class="pln" style="color:#48484c;">org.apache.maven.plugins</span><span class="tag" style="color:#0088;"></groupId></span></code></div><div class="L4" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">			</span><span class="tag" style="color:#0088;"><artifactId></span><span class="pln" style="color:#48484c;"> maven-project-info-reports-plugin </span><span class="tag" style="color:#0088;"></artifactId></span></code></div><div class="L5" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">		</span><span class="tag" style="color:#0088;"></plugin></span></code></div><div class="L6" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">	</span><span class="tag" style="color:#0088;"></plugins></span></code></div><div class="L7" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="tag" style="color:#0088;"></reporting></span></code></div></div>

如果用的是eclipse,那就用run as-build-在Goals那个框框里输入:
project-info-reports:dependencies,如果实在dos环境下,
就mvn project-info-reports:dependencies。然后就会在target的文件夹下,生成一个site文件夹,里边有个dependency.html,进去就能看到详细的依赖的信息。
或者直接在eclipse中打开pom.xml文件
会看到打开的窗口中有一个dependency hie开头的选项卡。
这个选择卡页面<span style="color:#ff0000;">左半部分显示了详细的jar包依赖树</span>。右半部分则是maven将会下载的jar包。
比如我们看到<span style="color:#ff0000;">右半部分</span>有2个asm的jar,版本不同。
现在需要排除其中低版本的jar(比如xwork-core下的某个jar依赖的asm版本相对较低,不一定说是xwork-core依赖,而是它的依赖的依赖,即多重依赖的asm都是可以的)
 
<div><pre name="code" class="prettyprint linenums prettyprinted" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word; background-color:rgb(247,247,249); padding:10px; border:1px solid rgb(225,225,232)"><div class="linenums" style="color:rgb(30,52,123); margin-top:0px; margin-bottom:0px; padding-left:0px"><div class="L0" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="tag" style="color:#0088;"><dependency></span></code></div><div class="L1" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">	</span><span class="tag" style="color:#0088;"><groupId></span><span class="pln" style="color:#48484c;">org.apache.struts.xwork</span><span class="tag" style="color:#0088;"></groupId></span></code></div><div class="L2" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">	</span><span class="tag" style="color:#0088;"><artifactId></span><span class="pln" style="color:#48484c;">xwork-core</span><span class="tag" style="color:#0088;"></artifactId></span></code></div><div class="L3" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">	</span><span class="tag" style="color:#0088;"><version></span><span class="pln" style="color:#48484c;">${struts.version}</span><span class="tag" style="color:#0088;"></version></span></code></div><div class="L4" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">	</span><span class="tag" style="color:#0088;"><exclusions></span></code></div><div class="L5" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">		</span><span class="tag" style="color:#0088;"><exclusion></span></code></div><div class="L6" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">			</span><span class="tag" style="color:#0088;"><artifactId></span><span class="pln" style="color:#48484c;">asm</span><span class="tag" style="color:#0088;"></artifactId></span></code></div><div class="L7" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">			</span><span class="tag" style="color:#0088;"><groupId></span><span class="pln" style="color:#48484c;">asm</span><span class="tag" style="color:#0088;"></groupId></span></code></div><div class="L8" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">		</span><span class="tag" style="color:#0088;"></exclusion></span></code></div><div class="L9" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="pln" style="color:#48484c;">	</span><span class="tag" style="color:#0088;"></exclusions></span></code></div><div class="L0" style="color:rgb(190,190,197); line-height:18px; padding-left:0px; list-style-type:none"><code class="language-xml" style="font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace; word-wrap:break-word"><span class="tag" style="color:#0088;"></dependency></span></code></div></div>
 

以后该如何解决这种类似的问题呢。eclipse提供了对隐式依赖jar包的查看功能:在eclipse中打开一个pom文件,在Dependency Hierarchy的Tab页中,就可以查看当前pom文件中显示声明的jar包,及这些显示声明的jar中隐式引入的依赖jar包。


这样就可以查看有哪些隐式的依赖jar会导致jar包冲突了。

这篇关于Maven Pom 文件中的隐式依赖导致Jar冲突的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138933

相关文章

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们