maven 傳遞依賴 衝突解決

2021-06-26 18:27:37 字數 566 閱讀 3003

依賴是會被傳遞

a-->c b-->a ==>b-->c(這種依賴是基於compile這個範圍進行傳遞)

在dependency配置中如果沒有寫scope預設就是compile範圍,依賴的傳遞主要是針對compile作用域

依賴的範圍:

test範圍指的是測試範圍有效,在編譯和打包時都不會使用這個依賴

compile範圍指的是編譯範圍有效,在編譯和打包時都會將依賴儲存進去

provided範圍指的是在編譯和測試的過程有效,最後生成war包時不會加入,諸如:servlet-api,因為servlet-api,tomcat等web伺服器已經存在了,如果再打包會衝突

runtime在執行的時候依賴,在編譯的時候不依賴

依賴衝突

1、如果a依賴於b的1.0版本,c依賴於b的1.1版本,d依賴於a和c,這時在d的pom中哪乙個依賴先寫就使用先寫依賴的版本

2、如果a依賴於b的1.0版本,c依賴於b的1.1版本,d依賴於a和c,f依賴於d和c,依賴的路徑的長短不一致就選擇最小的

3、如果希望精確的控制依賴包,可以使用依賴的排除功能——>exclusions來排除

Maven中依賴版本衝突問題

解決該問題有四種原則 路徑近者優先原則,第一宣告者優先原則,這兩種原則又統稱為調節原則,還有排除原則和版本鎖定原則。以下原則struts2 spring plugin中的spring bean 3.0.5包和spring context中spring bean4.2.4版本做例子進行說明 一 路徑近...

Maven依賴排除 禁止依賴傳遞 取消依賴的方法

1.專案間傳遞 如果我的當前專案是project1,project1要依賴project2,project1依賴project2的配置中加上 true,表示依賴可選,com.projecctgroupid project2artifactid 1.0version compilescope true...

Maven依賴排除 禁止依賴傳遞 取消依賴的方法

1.專案間傳遞 如果我的當前專案是project1,project1要依賴project2,project1依賴project2的配置中加上 true,表示依賴可選,com.projecctgroupid project2artifactid 1.0version compilescope true...