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

Joe*_*oel 5 ehcache war dependency-management maven

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

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

在我的应用程序包中发生以下步骤.

  1. 我的ehcache jar被复制到/ WEB-INF/lib /
  2. 包含ehcache的.war依赖项构建并覆盖在我的目标之上
  3. 最终的.war文件是从目标创建的

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

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

mat*_*tts 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>
Run Code Online (Sandbox Code Playgroud)