2010-11-19 38 views
21

你認爲這是一個很好的習慣去除可以在maven pom中找到的每個傳遞性依賴關係嗎?Maven:我應該保留還是移除也是傳遞依賴項的聲明的依賴項?

例子:
我的項目依賴於A和B.
B也A.
的傳遞依賴我應該保持的B我的POM或刪除呢?

什麼是最好的:
有所有已知的罐子,甚至傳遞的,在pom上聲明或只保留頂級罐子?

這是一個有點主觀的,但我試圖清理一些巨大的勁歌(父母和子女)有很多傳遞依賴的。我想盡可能簡化我的POM,但我也希望它們可以維護。

回答

19

如果你的項目有基於B直接依賴關係,那麼你應該保持它,即使B是A的傳遞依賴它可以在未來的版本將不再爲使用B中的你就必須重組POM .XML。

通常,Maven依賴關係應該反映邏輯項目依賴關係。

+0

感謝您的答案和鏈接。我喜歡這個建議:'反映邏輯項目依賴關係' – Guillaume 2010-11-22 09:08:39

+0

難道你不認爲你應該在這裏區分內部和外部的依賴嗎?我有類似的問題:http://stackoverflow.com/questions/20800571/are-there-any-reasons-to-keep-explicit-dependency-declaration-for-my-own-transit我仍然無法看到一個原因爲什麼我應該打擾聲明我自己的模塊之間的所有依賴關係。如果API會改變,項目將無法編譯,那麼我會修復它,並且很可能會提高代碼的可維護性:) – 2013-12-30 08:59:49

+0

鏈接與問題/答案相關的方式如何? – 2015-11-18 14:30:56

11

我會喜歡避免傳遞依賴的聲明,並明確包括它們在POM他們,如果有一個很好的理由。這裏是我的論點:

  • 我試着保持pom儘可能簡單。即使明確使用了傳遞依賴關係,Maven pom也會變得更加冗長。

通過聲明的傳遞依賴(即使你明確地需要它們):

  • 冗餘在聲明中介紹,因爲這些信息已經在神器的POM描述符需要

  • 如果神器的新版本需要不依賴於transitive dependency了,你必須從你的裝配自己刪除transitive dependency,如果transitive dependency明確聲明。

  • 通過顯式聲明傳遞依賴關係來處理傳遞性的信息。

這將是有意義,包括依賴明確在以下情況:

  • 你有一隻兩個依賴,說CD,需要的傳遞依賴B的不同版本(或者您需要在項目中使用B的特定版本)。在這種情況下,您必須選擇B版本並明確定義傳遞依賴項T。 (*)

結論: 我會盡力避免的聲明,除非是有意義的特別聲明神器(在類似的情況下(*))。

+0

如果你想參加類似的討論:http://stackoverflow.com/questions/20800571/are-there-any-reasons-to-keep-explicit-dependency-declaration-for-my-own-transit – 2013-12-30 09:00:39

相關問題