maven 傳遞依賴-衝突解決
阿新 • • 發佈:2019-01-11
依賴是會被傳遞
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來排除