2012-06-14 127 views
5

我有一個maven3 webapp(war)項目,它有2個依賴關係。一個是jar(ehcache),另一個是戰爭依賴(我無法控制的第三方庫)。如何從被maven依賴關係覆蓋的戰爭中移除.jar文件

第三方戰爭依賴依賴於更早版本的ehcache,它與我需要使用的更高版本衝突。

在我的應用程序包期間發生以下步驟。

  1. 我的Ehcache罐子被複制到/ WEB-INF/lib目錄/
  2. 將.war依賴這其中也包括了Ehcache是​​建立並覆蓋在我的目標之上
  3. 最終.war文件從創建目標

無論我做什麼,戰爭總是包含早期版本的ehcache。我甚至嘗試編寫一個通過maven-antrun-plugin執行的ant腳本,該腳本從目標目錄中刪除.jar文件。但是,在.war依賴項被覆蓋之前,這總是完成。

有誰知道我可以如何排除/刪除早期版本的ehcache?

+0

你對戰爭的依賴?你有多模塊構建? – khmarbaise

回答

8

您可能需要從疊加層中按照文件名排除ehcache jar。如果你是不是已經宣佈你的依賴戰爭的明確覆蓋,你就必須做到這一點在戰爭中的插件配置:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.2</version> 
     <configuration> 
     <overlays> 
      <overlay> 
      <groupId>your.thirdparty.war.groupId</groupId> 
      <artifactId>your.thirdparty.war.artifactId</artifactId> 
      <excludes> 
       <exclude>WEB-INF/lib/ehcache*.jar</exclude> 
      </excludes> 
      </overlay> 
     </overlays> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
+0

謝謝,這正是我所需要的。 – Joel

相關問題