maven 檢查jar依賴衝突和版本衝突 以及解決
阿新 • • 發佈:2019-01-23
問題描述:
專案中用到dubbo實現分散式遠端呼叫服務,整合dubbo的時候,遇到一個Spring的錯誤,NoSuchMethodError的問題。由於匯入了不同版本的jar包造成的。就是說,當我釋出了一版2.0jar的時候裡面有個我新寫的方法 adduser,但是1.0裡面沒有,pom沒有及時更新jar,這樣就會有NoSuchMethodError。我們怎麼知道是否是jar包衝突的問題呢,可以使用maven命令來檢視。
問題解決:
mvn dependency:tree
可以看到dubbo包依賴了哪些包,裡面引用了Spring的包,我們專案用的是ssm框架,所以會引用spring4.2.4的包,這樣spring版本就出現了衝突。
去除預設引入的spring即可。
<!-- dubbo相關 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>${dubbo.version}</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency>
在專案釋出的時候,一般都需要進行依賴衝突檢查或者重複類的檢查,上面tree命令只能檢查jar依賴的衝突,不能看到所有的類的依賴關係,還有下面這個命令 enforcer:enforce 是用來檢查重複類的。
mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false
總結:
maven不僅是構建工具,它還是依賴管理工具和專案管理工具,提供了中央倉庫,能夠幫我們自動下載構件。有很多命令需要我們去學習。在實踐中多多總結經驗。