解決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緩存也是很多坑,沒事重啟下或者刷新下。
閱讀更多 碼向未來 的文章