如何完全防止Maven中的战争叠加

时间:2012-08-30 09:32:28

标签: maven dependencies war pom.xml

您好我有一个maven项目,需要在集成测试开始之前将2场战争部署到码头环境。这些战争在正常情况下不是项目的依赖关系,但是它们需要单独部署以进行集成测试才能工作。

我通过为2次战争添加测试依赖项来完成此操作。然后我使用maven-dependency-plugin的copy-dependencies目标将war复制到一个新目录并删除它们的版本号,以便jetty可以使用org.mortbay.jerry.jetty-maven-plugin查找和部署它们作为预集成测试阶段。

我的问题是,尽管新的依赖关系是测试范围,但maven仍然将它们覆盖在这个项目之战上。

有没有人知道如何在战争中添加依赖关系,而战争只会下载依赖关系而不再对其进行任何操作?

1 个答案:

答案 0 :(得分:1)

我会通过创建一个单独的Maven模块来进行集成测试。执行此操作后,您可以将<packaging>类型设置为pom,从而消除WAR覆盖的问题。只需将两个集成测试WAR作为依赖项以及测试/验证所需的WAR包括在内。

这样做还可以将构建过程与集成测试过程完全分离,这可以通过其他方式提供帮助。

如果您不喜欢这个想法,那么使用WAR插件的<dependentWarExcludes>配置来保持您的测试WAR不在WAR包装中。有关详细信息,请参见此处:

http://maven.apache.org/plugins/maven-war-plugin/examples/war-overlay.html