1. 程式人生 > >Maven依賴重複及版本問題

Maven依賴重複及版本問題

這裡寫圖片描述

首先,遇到了NoSuchMethod異常,第一反應是類沒有載入,查看了一下發現有這個類沒有這個方法
這裡寫圖片描述

這裡寫圖片描述

這個類是com.google.guava下的。
我的pom檔案中按順序引入了三個依賴
1.dubbo
2.curator
3.spirngfox.swagger2

這三個依賴中都包含guava,又由於dubbo依賴處於第一位,所以maven3引入了dubbo中16.01版本的guava。curator中guava的版本為10.1,swagger中guava的版本為20.1。由於swagger需要的版本高於引入的版本(20.1的版本由於conflict衝突而被丟棄)也因此導致了NoSuchMethod異常。
這裡寫圖片描述

解決方案:
1、把最高版本的放在前面,maven3在引入這個版本後,不會引入其他版本
2、用把其他版本排除掉
3、直接在最前面引入適當版本的guava(本節中)依賴,maven不會再引入子依賴

idea外掛maven helper

老實講,這個問題還是花了我很長的時間,一方面是剛開始沒有想到是依賴衝突的問題,還有一個就是依賴衝突不好找。
可以用:mvn dependency:tree -Dincludes=com.google.guava
但是還是不太好用,於是直接上idea plugin:maven helper

安裝後重啟idea,在pom.xml檔案的左下角出現了一個dependency analyzer
這裡寫圖片描述

棒棒噠