2011-05-06 68 views
3

我正在使用Maven2。當我看的mvn dependency:tree -Dverbose輸出我看到很多:Maven排除最佳做法

[INFO] +- org.springframework:spring-orm:jar:3.0.5.RELEASE:compile 
[INFO] | +- (org.springframework:spring-beans:jar:3.0.5.RELEASE:compile - omitted for duplicate) 
[INFO] | +- (org.springframework:spring-core:jar:3.0.5.RELEASE:compile - omitted for duplicate) 
[INFO] | +- (org.springframework:spring-jdbc:jar:3.0.5.RELEASE:compile - omitted for duplicate) 
[INFO] | \- (org.springframework:spring-tx:jar:3.0.5.RELEASE:compile - omitted for duplicate) 

所有這些在我的POM作爲一個依賴關係inlcuded爲好。我的問題是,要遵循的政策是什麼,保留它,僅排除版本衝突,或者排除每一個傳遞性依賴。

我看不出在手冊中與此相關的任何東西。

謝謝!

+1

的問題是爲什麼要添加其他依賴你的POM,如果他們已經來作爲傳遞依賴的擔心? – khmarbaise 2011-05-06 10:10:07

回答

2

依賴條件的兩重性是沒有問題withm行家 - 這樣你就可以離開這個,因爲它是。 (每隔文物取決於apache.logging - 你不必擔心安博認爲,Maven的照顧你)

你只需要解決版本confilcts或者你可以ommit將在運行環境中提供依賴條件。

最好的做法是(爲指出krosenvold):

包括含有 Java類文件是直接通過 代碼引用的任何依賴。因此,應該定義從源 引用的任何類別 。

並且不要口是心非左右在dependecy樹

0

在這種情況下,你給了那裏,你只需給這意味着只給了org.springframework依賴的依賴:彈簧ORM:罐子:3.0.5.RELEASE:編譯,但不是爲別人。這將使你的POM的苗條...

1

應該(至少)包括任何依賴包含一個java代碼直接引用的類文件。因此,應該定義從源代碼引用的任何類。

此創建的依賴性的定義一定封裝;您的項目負責定義其自己的依賴關係,並且他們再次定義他們的依賴關係。這是mvn依賴的東西:分析告訴你。

最大值被略小於良好定義的,並且通常由需要驅動。幾個庫可以依賴於第三個庫的不同版本。在這種情況下,你可以禁止其中一個或只是在你的pom中包含正確的一個。您自己的pom中的版本將優先。

有時你只需要包括的東西能得到相應的版本(數據庫驅動程序浮現在腦海中)。

但是最小的依賴關係列表是明確定義的。