2012-04-10 476 views
7

比如我有依賴性:Maven的依賴性:排除一個類

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.5.6</version> 
</dependency> 

我可以排除一類,例如org/slf4j/Marker.class

+0

'排除'在什麼階段 - 編譯或打包? – Raghuram 2012-04-10 10:46:02

+0

封裝在.ear中,使用maven-ear-plugin – Ilya 2012-04-10 10:48:03

+1

hmm! .ear需要的是沒有指定類的'slf4j-api.jar'。沒有直接的方法來實現這一點。 – Raghuram 2012-04-10 10:52:29

回答

3

在無法排除某個單一類試試吧。在<dependency>標籤內,您可以定義<exclusions/>。但是,這些是針對整個依賴關係的。

陰影插件應小心處理。一般來說,在一個地方創建一個包含所有依賴關係的jar並不是一個好習慣,因爲如果要將另一個項目中生成的工件用作依賴關係,它往往會導致問題。例如,在你的jar中加slf4j,然後在另一個你有另一個slf4j的項目中取決於你的artifact會給你帶來悲傷。

2

您可以更改這些類並將它們定義在不同的jar /模塊中,這些應該作爲依賴關係之前提供依賴關係的jar文件(Marker.class)。

Maven記得從版本2.0.9開始的類路徑排序。