我工作的地方使用Maven,我們有很多內部庫。我們試圖以向後兼容的方式進行更改,但有時我們的某個庫需要另一個庫的更新版本。如果最終產品最終不能吸引更新的庫版本,那麼這可能會導致問題。我的項目使用的是舊版本的依賴關係嗎?
對於每個最終產品,我們有一個dependencyManagement
部分,聲明哪些版本的傳遞依賴項應該用於該項目。我們這樣做,而不是讓Maven找出使用哪個版本,因爲我們想要控制正在使用哪些版本的庫。
即使我們讓行家弄清楚應該使用庫的版本,它可能是舊的庫可以使用,這可能導致ClassNotFoundExceptions等..
是否有一個Maven插件或方式確定項目的依賴關係是否需要更新版本時,是否使用舊版本的依賴關係?
有mvn dependency:tree
但我們有很多依賴,我不希望有通過手的巨單看。
謝謝!
編輯
因爲我們有很多的圖書館,如果最終產品使用庫A,B和C,A和B都使用不同版本的C,C的最新版本是不始終使用。從Introduction to the Dependency Mechanism:
依賴調解 - 這決定了遇到的工件的多個版本時,將使用什麼版本的依賴 的。 目前,Maven 2.0僅支持使用「最接近定義」 ,這意味着它將使用與依賴關係樹中項目最接近的版本 。您可以始終通過在項目的POM中明確聲明 版本來保證。請注意,如果 兩個依賴項版本在依賴關係樹中處於相同深度 ,直到Maven 2.0.8,則沒有定義哪一個會贏,但是因爲 Maven 2.0.9它是聲明中的順序:首先 聲明獲勝。
猜猜我很困惑。你有一個pom.xml,所以你可以控制你自己的依賴關係。 Maven 3具有傳遞依賴性,所以如果你使用的東西需要更新的依賴關係,它會代表你的。 – mortsahl
Maven 3.x已經出現了相當長的一段時間(5年?)...你應該使用它。 – mortsahl
是的,我正在使用Maven 3 –