Maven傳遞依賴的坑:父pom中dependencyManagement版本優先級高於傳遞依賴版本


一、由來

之前同事問了個問題,就是當前工程為spring boot項目,假設版本號為2.0.3

 

這個項目中依賴了一個spring boot項目依賴(先別管為啥有這么奇葩的依賴,這個版本是1.5.9)。

1.5.9的版本,會傳遞一堆starter過來。

結果最終看到的是,所有的starter版本都是2.0.3。

 

二、原因

maven官方有下面一段話:

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

 

 翻譯下:

Dependency management:允許項目作者直接指定artifact的版本,當該組件是通過傳遞依賴傳遞過來,或者為沒有指定版本號的直接依賴。

 

再回頭看前言里的問題,就是當前工程繼承了spring boot parent 2.0.3,然后里面的<dependencyManagement>指定了各組件的版本號。這時候被依賴的1.5.9的組件,作為傳遞依賴,其版本號就會使用2.0.3.

 

三、參考

也有人遇到了同樣問題:

https://blog.csdn.net/zwt0909/article/details/52372765

https://blog.csdn.net/jiaobuchong/article/details/81842503

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM