IDEA下解決Maven依賴衝突
阿新 • • 發佈:2018-11-28
一:問題背景.
Maven依賴使用方便,但是出現了依賴衝突後,一般如何解決吶?本文將以IDEA為開發工具介紹一下.
方式一:使用Maven-Helper外掛(推薦)
1.1 Maven外掛準備.(Maven-Helper外掛).
下載後,重新啟動IDEA,即可使用.
1.2 Maven-Helper使用.
點選專案的pom.xml檔案.
目前專案使用的版本號是2.5的.但是有2.3的依賴存在,導致發生了衝突,如果有許多的version的,也只會使用一個其他的就會標紅表示發生了依賴衝突的.
方式一:查詢Source所在的位置.
方式二 查詢source所在的位置.
1.3 目前是發現了衝突所在的詳細位置了,接下來就是解決衝突了.
方式二(pom.xml檔案滑鼠右鍵)
但是這個oss物件的依賴包的衝突解決了,但是會出現問題,由於那個common-lang是Apache的工具類,那個<exclusion>標籤又不加version標籤,如果去掉那裡這裡的2.3的版本和2.5的版本就都去掉了.顯然是不合理的.不建議去掉這裡的衝突.
簡單總結一個Maven依賴衝突管理中的幾個原則.
- 依賴是使用Maven座標來定位的,而Maven座標主要由GAV(groupId, artifactId, version)構成。如果兩個相同的依賴包,如果groupId, artifactId, version不同,那麼maven也認為這兩個是不同的。(唯一性)
- 依賴會傳遞,A依賴了B,B依賴了C,那麼A的依賴中就會出現B和C。(依賴傳遞性)
- Maven對同一個groupId, artifactId的衝突仲裁,不是以version越大越保留,而是依賴路徑越短越優先,然後進行保留。(最短路徑)
- 依賴的scope會影響依賴的影響範圍的.