5

我有一个 maven3 webapp (war) 项目,它有 2 个依赖项。一个是 jar (ehcache),另一个是战争依赖项(我无法控制的第 3 方库)。

第 3 方战争依赖项依赖于更早版本的 ehcache,这与我需要使用的更高版本发生冲突。

以下步骤在我的应用程序包期间发生。

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

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

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

4

2 回答 2

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>
于 2012-06-14T16:03:46.193 回答
-1

有关排除传递依赖的更多信息:

在 stackoverflow 上:排除单个依赖项的所有传递依赖项

在网络上(参考)http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-project-dependencies.html#pom-relationships-sect-transitive

于 2012-06-14T20:43:17.857 回答