一、由來
之前同事問了個問題,就是當前工程為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