如何从maven依赖项覆盖的war中删除.jar文件

时间:2012-06-14 15:03:01

标签: maven war ehcache dependency-management

我有一个有2个依赖项的maven3 webapp(war)项目。一个是jar(ehcache),另一个是war依赖(我无法控制的第三方lib)。

第三方战争依赖关系依赖于早期版本的ehcache,它与我需要使用的更高版本冲突。

在我的应用包中发生以下步骤。

  1. 我的ehcache jar被复制到/ WEB-INF / lib /
  2. 还包含ehcache的.war依赖关系构建并叠加在我的目标
  3. 之上
  4. 最终.war文件是从目标
  5. 创建的

    无论我做什么,战争总是包括早期版本的ehcache。我甚至尝试编写一个ant脚本,我通过maven-antrun-plugin执行该脚本,从目标目录中删除.jar文件。但是,这总是在覆盖.war依赖关系之前完成。

    有谁知道如何排除/删除早期版本的ehcache?

2 个答案:

答案 0 :(得分:8)

您可能需要从叠加层中按文件名排除ehcache jar。如果您尚未为自己的战争声明明确的叠加层,那么在war插件配置中也必须这样做:

<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>

答案 1 :(得分:-1)