使用Maven Helper解决Maven插件冲突的方法

2025-05-29 0 63

1、何为依赖冲突

maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。maven的依赖机制会导致jar包的冲突。举个例子,现在你的项目中,使用了两个jar包,分别是a和b。现在a需要依赖另一个jar包c,b也需要依赖c。但是a依赖的c的版本是1.0,b依赖的c的版本是2.0。这时候,maven会将这1.0的c和2.0的c都下载到你的项目中,这样你的项目中就存在了不同版本的c,这时maven会依据依赖路径最短优先原则,来决定使用哪个版本的jar包,而另一个无用的jar包则未被使用,这就是所谓的依赖冲突

在大多数时候,依赖冲突可能并不会对系统造成什么异常,因为maven始终选择了一个jar包来使用。但是,不排除在某些特定条件下,会出现类似找不到类的异常,所以,只要存在依赖冲突,在我看来,最好还是解决掉,不要给系统留下隐患。

2、解决方法

解决依赖冲突的方法,就是使用maven提供的<exclusion>标签,<exclusion>标签需要放在<exclusions>标签内部,就像下面这样:

?

1

2

3

4

5

6

7

8

9

10

11
<dependency>

<groupid>org.apache.logging.log4j</groupid>

<artifactid>log4j-core</artifactid>

<version>2.10.0</version>

<exclusions>

<exclusion>

<artifactid>log4j-api</artifactid>

<groupid>org.apache.logging.log4j</groupid>

</exclusion>

</exclusions>

</dependency>

log4j-core本身是依赖了log4j-api的,但是因为一些其他的模块也依赖了log4j-api,并且两个log4j-api版本不同,所以我们使用<exclusion>标签排除掉log4j-core所依赖的log4j-api,这样maven就不会下载log4j-core所依赖的log4j-api了,也就保证了我们的项目中只有一个版本的log4j-api

3、maven helper

看到这里,你可能会有一个疑问。如何才能知道自己的项目中哪些依赖的jar包冲突了呢?maven helper这个intelij idea的插件帮我们解决了这个问题。插件的安装方法我就不讲了,既然你都会maven了,我相信你也是会安装插件的。

在插件安装好之后,我们打开pom.xml文件,在底部会多出一个dependency analyzer选项

使用Maven Helper解决Maven插件冲突的方法

点开这个选项

使用Maven Helper解决Maven插件冲突的方法

找到冲突,点击右键,然后选择exclude即可排除冲突版本的jar包。

4、小技巧

除了使用maven helper查看依赖冲突,也可以使用idea提供的方法——maven依赖结构图,打开maven窗口,选择dependencies,然后点击那个图标(show dependencies)或者使用快捷键(ctrl+alt+shift+u),即可打开maven依赖关系结构图

使用Maven Helper解决Maven插件冲突的方法

在图中,我们可以看到有一些红色的实线,这些红色实线就是依赖冲突,蓝色实线则是正常的依赖。

使用Maven Helper解决Maven插件冲突的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:https://segmentfault.com/a/1190000017542396

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 使用Maven Helper解决Maven插件冲突的方法 https://www.kuaiidc.com/110730.html

相关文章

发表评论
暂无评论