记录一次解决 Maven 依赖冲突的过程
在项目中 screw-core 依赖时发生了冲突,控制台指出是 log4j 产生的依赖冲突,导致程序报错无法运行,是一个典型的 maven 依赖冲突,基于这个问题进行处理
处理
首先查看控制台报错日志
基于这个报错在 pom 依赖中查看一下
screw-corey 依赖是这次新增加的依赖,也就是说依赖冲突是由于 screw-core 依赖和原有的依赖产生了冲突,具体是哪个依赖,我们打开 screw-core 依赖进行查看他的依赖,奇怪的是并没有看到 screw-core 中存在 log4j 的引用,这时候想到一个 idea 的插件 maven-helper
maven-helper 这个插件是专门帮助我们解决 maven 依赖冲突的插件,使用时可以看到具体的依赖冲突是哪些依赖,我进行了安装使用
首先进入 pom 文件,安装插件后会看到左下角有一个 Dependency Analyzer 按钮,点击一下,我们可以看到依赖冲突
依赖冲突有很多,其实这里面的依赖冲突就是不同的依赖引用了不同的版本 jar 包,但是很多是没有影响的,这里面差生影响的就是 log4j-api,我们看到项目中有两个版本,一个是 2.17.0,一个是 2.11.2
点击 2.17.0jump to source 可以看到他的引用,根据 pom 发现他是在引入 screw-core 之前就已经存在的依赖,这就说明随着 screw-corey 依赖的引入,导入了 2.11.2 版本的 log4j,进而导致依赖冲突,然而在 screw-core 的依赖引入中没有看到,就说明是他的下一层架依赖引入或者多层级依赖引入导致的问题。这时候我采用了排除法,对 screw-core 中类似 log4j 的依赖逐个排除
排除掉 log4j 依赖,问题解决
回顾
对于 maven-helper 的 idea 插件,在市面上是比较火的,但是使用起来并没有达到我理想中的期望,比如直接找到冲突的依赖,直接排除掉,看了些网上的教程,对于简单的以来冲突 maven-helper 可以较快的定位到,但是对于向我遇到的问题,还是需要慢慢的去排查,总之问题解决了,也算是很有收获。
作者:千云
链接:https://juejin.cn/post/7233216023277158459
来源:稀土掘金
评论