maven的pom.xml用解決版本問題

maven管理庫依賴,有個好處就是連同庫的依賴的所有jar文件一塊兒下載,免去手工添加的麻煩,但同時也帶來了同一個jar會被下載了不一樣版本的問題,好在pom的配置裏面容許用<exclusion>來排除一些不須要同時下載的依賴jar 。maven

致使jar包衝突的緣由

一、mvn的傳遞依賴特性:mvn編譯打包除了會引入直接申明的依賴,還會引入間接申明的依賴spa

 

二、mvn的依賴仲裁規則:開發

    1). 按照項目總控POM的DependencyManager版本聲明進行仲裁。io

    2). 如無仲裁聲明,則按照依賴最短路徑肯定版本。編譯

    3). 若相同路徑,有嚴格區間限定的版本優先。class

    4). 若相同路徑,無版本區間,則按照先入爲主原則。打包

 

三、依賴的scope會影響依賴的影響範圍。配置

 

 

簡單衝突解決的三途徑!

 

一、根據報錯的class名或方法名定位到可能致使衝突的jar包,jar包衝突引入有幾種狀況:下載

    1).  引入了這個jar包的多個版本,而mvn仲裁的時候取了錯誤的版本,這個版本自己就缺乏正確的class或方法。方法

    2).  引入了不一樣座標可是具備同名class的多個jar,mvn加載class的順序差別會致使加載到錯誤的class。

二、經過mvn dependency:tree  >  tree.txt 導出所有的依賴。 可使用 -Dverbose 、-Dincludes或者-Dexcludes參

數來精肯定位致使衝突的jar包。 

三、找到須要排除的依賴jar包,經過mvn仲裁優先的方法定義正確的jar包,或者經過exclusion的方式排除錯誤的jar包。

4.舒適提示:另外在項目開發中jar儘可能按需引入,系統管理起來,別什麼都無論直接加包進來,這樣也能夠在必定程度上減小jar

包衝突的風險。

相關文章
相關標籤/搜索