大家在实际项目中想必遇到依赖冲突是特别的头疼,如果项目比较复杂,比较大的话,那依赖冲突解决起来是特别耗费时间和精力的。

这几天在项目里加了个从阿里云OSS中下载文件的接口,其中用到了OSSClientBuilder这个方法,不过由于之前项目中集成的OSS版本太低,没有这个方法,所以需要更新版本,但是更新过版本后却报了依赖冲突的问题。还好用了IDEA中的这个插件,很快就搞定了!

一、插件下载

使用的插件叫做 Maven Helper ,大家可以根据下图的步骤去下载,下载后不用重启idea也是可以使用的。

idea java依赖冲突 idea依赖冲突插件_idea java依赖冲突

idea java依赖冲突 idea依赖冲突插件_intellij-idea_02

 二、解决冲突

在安装好这个插件后,打开自己的pom.xml文件,大家可以在文件右下角看到 Dependency Analyzer这个模块,点击进去

idea java依赖冲突 idea依赖冲突插件_xml_03

idea java依赖冲突 idea依赖冲突插件_intellij idea_04

  • Conflicts:展示所有冲突。
  • All Dependencies as List:以列表的方式展示所有依赖。
  • All Dependencies as Tree:以树形的方式展示所有依赖。

我们选择 aliyun-java-sdk-core,选择以树形展示所有依赖,得到如下的信息显示。

 

idea java依赖冲突 idea依赖冲突插件_xml_05

从上图中我们就可以很清楚的看到 aliyun 的包和 spring-clould-starter-alicloud-ans 的包起了冲突,所以我们右键可以看到红框圈出来的 jump to Source 或者直接F4键可以直接跳到 pom.xml 文件中引用该依赖的地方,然后使用 Exclude 标签排除冲突依赖包的引用就可以完美的解决了。

idea java依赖冲突 idea依赖冲突插件_idea java依赖冲突_06

再次启动项目,测试接口发现功能正常了,整个排查过程也就结束了,IDEA的功能还是很强大的。

总结

很多时候的 jar 包冲突,有些是我们很容易排除,例如在pom.xml 中我们就可以发现一些重复引入,但是版本不相同的依赖。还有一些是其他依赖传递依赖进来的,我们在 pom.xml 文件中不能很直观的发现,这时候我们借助工具可以发现这种冲突的依赖。

类似的依赖冲突基本都可以参考上述的方式进行排查,希望通过本篇文章对大家解决项目中依赖冲突有所帮助。