3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
對(duì)于maven2,沒(méi)有辦法做你所描述的。對(duì)于maven 3,有。如果您使用的是maven 3
對(duì)于maven 2,我建議為具有<exclusions>的依賴(lài)項(xiàng)創(chuàng)建自己的自定義pom。對(duì)于需要使用該依賴(lài)項(xiàng)的項(xiàng)目,請(qǐng)將依賴(lài)項(xiàng)設(shè)置為自定義pom而不是典型工件。雖然這不一定允許您使用單個(gè)<exclusion>排除所有傳遞依賴(lài)項(xiàng),但它確實(shí)允許您只需編寫(xiě)一次依賴(lài)項(xiàng),并且所有項(xiàng)目都不需要維護(hù)不必要的長(zhǎng)排除列表。

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

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
我覺(jué)得有用的一件事:
如果將依賴(lài)項(xiàng)與依賴(lài)項(xiàng)放在項(xiàng)目的父POM的dependencyManagement部分中,或者在可導(dǎo)入的依賴(lài)項(xiàng)管理POM中,那么您不需要重復(fù)排除(或版本)。
例如,如果您的父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>
然后,項(xiàng)目中的模塊可以簡(jiǎn)單地將依賴(lài)關(guān)系聲明為:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
父POM中將指定版本和排除項(xiàng)。我?guī)缀踉谒许?xiàng)目中使用這種技術(shù),它消除了大量的重復(fù)。
添加回答
舉報(bào)