1. 程式人生 > >maven 檢查jar依賴衝突和版本衝突 以及解決

maven 檢查jar依賴衝突和版本衝突 以及解決

問題描述:

          專案中用到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不僅是構建工具,它還是依賴管理工具和專案管理工具,提供了中央倉庫,能夠幫我們自動下載構件。有很多命令需要我們去學習。在實踐中多多總結經驗。