1. 程式人生 > >IDEA下解決Maven依賴衝突

IDEA下解決Maven依賴衝突

一:問題背景.

    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依賴衝突管理中的幾個原則.

  1. 依賴是使用Maven座標來定位的,而Maven座標主要由GAV(groupId, artifactId, version)構成。如果兩個相同的依賴包,如果groupId, artifactId, version不同,那麼maven也認為這兩個是不同的。(唯一性)
  2. 依賴會傳遞,A依賴了B,B依賴了C,那麼A的依賴中就會出現B和C。(依賴傳遞性)
  3. Maven對同一個groupId, artifactId的衝突仲裁,不是以version越大越保留,而是依賴路徑越短越優先,然後進行保留。(最短路徑)
  4. 依賴的scope會影響依賴的影響範圍的.