2012-12-11 51 views
4

我有pom聲明的依賴關係A,B和C.是否有可能創建一個配置文件,刪除依賴關係,以便當我編譯與該配置文件時,我結束了例如與編譯依賴項A和B (沒有C)?Maven配置文件刪除依賴

+0

你的問題是關於'''部分,對吧? –

+0

Andrew Logvinov - Righ,依賴項A,B,C在部分中聲明,我想使用配置文件刪除依賴項C.那可能嗎? – Kamil

回答

12

我不知道一種方法來排除配置文件中的頂級依賴關係(<exlusions>僅適用於傳遞依賴關係)。但是你可以在一個單獨的個人資料,例如指定一個默認的配置文件的「正常」的依賴和減少你的依賴關係:

<profiles> 

    <profile> 
     <id>default</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
       <version>1.2.14</version> 
      </dependency> 
     </dependencies> 
    </profile> 

    <profile> 
     <id>excludeDependency</id> 
     <dependencies> 
     </dependencies> 
    </profile> 

</profiles> 

與「excludeDependency」的個人資料編譯,如果你使用log4j的地方會失敗。

您的用例不清楚。也許像optional dependenciesprovided dependencies等其他解決方案也可以滿足您的需求。看看這些可能性。

+0

這是最好的解決方案,我想。 –

+0

謝謝,這回答我的問題 – Kamil

1

在Maven的配置文件是添加劑在基礎型材所以我發現使用好這種模式排除依賴:

<dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.14</version> 
    </dependency> 
</dependencies> 

<profiles> 
    <profile> 
     <id>Exclude</id> 
     <dependencies> 
      <dependency> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
       <version>1.2.14</version> 
       <scope>test</scope> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 

然後您可以通過更改範圍測試「排除」的依賴。不適合所有用途,但只是另一種選擇。