发布时间:2023-08-02
浏览次数:0
点击“结束代码生命”,关注并关注公众号
每日技术干货,第一时间送达!
什么是依赖冲突
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包。 而且,不排除在某些特定情况下,会出现类似于找不到类的异常情况。 因此,只要存在依赖冲突,在我看来,最好解决掉,不要给系统留下隐患。
解决方案
解决依赖冲突的方法是使用Maven提供的标签。 标签必须放在标签内部,如下图:
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-coreartifactId>
<version>2.10.0version>
<exclusions>
<exclusion>
<artifactId>log4j-apiartifactId>
<groupId>org.apache.logging.log4jgroupId>
exclusion>
exclusions>
dependency>
log4j-core本身依赖于log4j-api,并且由于其他一些模块也依赖于log4j-api,但是两个log4j-api版本不同,所以我们使用标签来排除log4j-core依赖的log4j-api,在这样,Maven就不会下载log4j-core所依赖的log4j-apiintellij idea找不到图标,这就保证了我们的项目中只有一个版本的log4j-api。
梅文
听到这里,你可能会有疑问。 如何知道我的项目中哪些依赖的Jar包有冲突? Maven这个IDEA插件帮我们解决了这个问题。 插件的安装方法我就不说了。 既然你了解了Maven,相信你也可以安装插件。
插件安装完后,我们打开pom.xml文件,顶部会多一个选项
点击这个选项
找到冲突的,右键,然后选择排除冲突版本的Jar包。
小方法
不仅仅使用Maven查看依赖冲突,还可以使用IDEA提供的方法——Maven依赖灯,打开Maven窗口,选择,然后点击图标(Show)或者使用快捷键(Ctrl+Alt +Shift+U) ,可以打开Maven依赖节点配置灯
图中,我们可以看到一些白色虚线,紫色虚线是依赖冲突intellij idea找不到图标,红色虚线是正常依赖。
来源:.com/a/42396
PS:为了避免找不到这篇文章,可以收藏、点赞,方便浏览和搜索。
过去的推荐
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码