如何在IDEA中排除多处调用产生的依赖冲突
Posted 纵横千里,捭阖四方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在IDEA中排除多处调用产生的依赖冲突相关的知识,希望对你有一定的参考价值。
在maven中不同的包会产生复杂的依赖关系,没有冲突万事大吉,一旦出现冲突或者执行有错误,就必须解决,如果依赖关系很多,例如log4j可能很多地方都调用,例如我的工程里缩小之后就这么密集,那该怎么准确排除掉呢?
这里涉及到两个问题,一个是找到关联的模块,第二是在每个模块分别排除掉。上的图是在idea中对一个module分析的结果。
我的方法不一定是最优的,但是能靠谱得解决问题。
例如我的工程里slf4j有两个产生了冲突,需要干掉一个。具体操作如下:
1. 找到调用的模块
使用命令
mvn dependency:tree > D:/tree.txt
这个命令将整个工程所有的依赖全部显示出来了,然后搜索,就可以i找到谁依赖了slf4j,例如这里可以看到我的common:core模块(红色位置)用了。
继续寻找,可以看到我的工程里有core,cache,server-es三个模块都是用了。如果你水平高,可以直接去相关位置修改。如果比较生疏,怕改晕了,可以这么做。
2. 使用idea自带工具解决排除掉冲突包
因为我的main方法在server-es模块中,所以我先用idea来处理这个模块。可以先选中这个mudule,然后选择上侧的这个符号:
接着出来一个特别密集的脑图,然后选择左上方的这个符号,可以将冲突位置标记更清晰一些。
但是仍然很复杂,这时候,使用ctr+f搜索会出现下面这个界面:
如果出不来,试一下win+f命令,mac使用command+f组合,然后切换到英文输入模式,直接输入slf,窗口会变成这个样子:
然后选中这个slf4j-log4j12的选项,脑图会变,但是可能仍然看不到位置。这时候重复执行上面的搜索操作,直到出现这样的结果:
然后执行如下的操作,选择“Exclude”就自动给我们加上排除的代码了。
解决完之后,刷新一下mvn编译一下再执行,如果过了就OK了,如果还是不行,就将其他module下的都按照上面的说明操作一遍。
我的idea装不上maven-helper。这个方法很简单,不需要安装复杂的插件了啥的,就能解决。
上面的方法很简单,但是确实解决了我的问题。
以上是关于如何在IDEA中排除多处调用产生的依赖冲突的主要内容,如果未能解决你的问题,请参考以下文章