3 回答

TA貢獻1798條經驗 獲得超7個贊
對于maven2,沒有辦法做你所描述的。對于maven 3,有。如果您使用的是maven 3
對于maven 2,我建議為具有<exclusions>的依賴項創建自己的自定義pom。對于需要使用該依賴項的項目,請將依賴項設置為自定義pom而不是典型工件。雖然這不一定允許您使用單個<exclusion>排除所有傳遞依賴項,但它確實允許您只需編寫一次依賴項,并且所有項目都不需要維護不必要的長排除列表。

TA貢獻1831條經驗 獲得超4個贊
對我有用的東西(可能是Maven的新功能)僅僅是在排除元素中做通配符。
我有一個多模塊項目,其中包含一個“app”模塊,該模塊在兩個WAR打包的模塊中引用。其中一個WAR打包的模塊實際上只需要域類(我還沒有將它們從app模塊中分離出來)。我發現這個工作:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>app</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
groupId和artifactId上的通配符排除了通常使用此依賴關系傳播到模塊的所有依賴項。

TA貢獻1828條經驗 獲得超3個贊
我覺得有用的一件事:
如果將依賴項與依賴項放在項目的父POM的dependencyManagement部分中,或者在可導入的依賴項管理POM中,那么您不需要重復排除(或版本)。
例如,如果您的父POM具有:
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
....
</dependencies>
</dependencyManagement>
然后,項目中的模塊可以簡單地將依賴關系聲明為:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
父POM中將指定版本和排除項。我幾乎在所有項目中使用這種技術,它消除了大量的重復。
添加回答
舉報