Maven如何解決jar包衝突

Maven如何解決jar包衝突

什麼時jar包衝突

當同一個項目中引入多個相同的jar包,只是它們的版本號不同,即version,而你想使用高版本中的類或者方法,此時低版本的jar包中沒有這個方法或者沒有這個類,就會拋出

  • java.lang.NoSuchMethodError
  • java.lang.ClassNotFoundException

解決方案

最短路徑原則

假如依賴關係是這樣的:

① :A----> B------>C---->D
② :E----->F------->D

此時maven選擇jar包時會優先選擇那個路徑短的,即選擇第二個中的D

聲明優先原則

當路徑相同的情況下,會優先使用最先聲明的jar包。

依賴排除

找到衝突的jar包,在IDEA中有相關的插件可以幫我們,然後給衝突的依賴加使用標籤即可排除,而且插件工具也可以自動添加標籤幫我們自動解決,只要點擊即可。

版本鎖定原則

正常項目都是多模塊的項目,如A和B共同依賴X這個依賴的話,那麼我們可以將X單獨抽取出來,同時設置其版本號,這樣X依賴在升級的時候,不需要分別對A和B模塊中的依賴X進行升級,避免太多地方(C、D….)引用X依賴的時候忘記升級造成jar包衝突,這也是實際項目開發中比較常見的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章