【Maven】依赖重复和冲突的问题


解决Maven包依赖重复、冲突导致(omitted for duplicate、omitted for conflict with x.y.z)问题


Java开发者避免不来使用Maven,你的项目避免不了依赖第三方的jar包,避免不了会发生依赖重复和冲突。

到底是怎么产生的呢?

举个例子,很容易理解。YourApp依赖Ajar,Ajar依赖Xjar-1.0、Yjar-1.0,还依赖Bjar,Bjar依赖Xjar-2.0、Zjar-1.0,这个时候YourApp是依赖Xjar-1.0还是依赖Xjar-2.0呢?这个上帝都不知道,听天由命,哪个版本被第一个加载进来就是它了。可想而知,出现诡异的问题那就不难理解了。

如何干掉这个问题呢?

首先,找出可能重复和冲突的依赖。使用的工具有:

<code>// 查看依赖树
mvn dependency:tree
// 查看依赖树,-Dverbose显示更多信息
mvn dependency:tree -Dverbose
// 查看依赖树,-Dincludes进行过滤
mvn dependency:tree -Dverbose -Dincludes='*jackson*:"jackson*'/<code>

其次,引入希望的版本,过滤其它不需要的版本,武功秘籍就是excludes,如下图:

引入指定版本

清除其它版本

在使用IDEA的时候,YourApp有时还是会出现类似的问题,那就刷新下Maven吧,IDEA缓存也是很多坑,没事重启下或者刷新下。