禁用maven中的war叠加层

时间:2011-04-11 14:31:26

标签: maven-2 maven build-process war

当我在maven项目中具有“war”类型的依赖项时,它会自动使用overlay将其合并到我正在构建的项目中。

我想禁用叠加。

为了简化开发过程,我想在为我的本地Tomcat构建时使用符号链接和maven-junction-plugin,并且只在我为测试和prod服务器构建时才覆盖。

关于如何处理我需要修改的战争依赖关系而不需要很长的构建周期的任何其他建议也是受欢迎的。

4 个答案:

答案 0 :(得分:2)

你不能像maven-war-plugin那样禁用叠加集:2.1.1但你可以从叠加层中排除文件。

排除所有叠加文件:

<dependentWarIncludes></dependentWarIncludes> 
<dependentWarExcludes>**</dependentWarExcludes>

从特定叠加层中排除所有文件:

<overlays>
  <overlay>
    <groupId>com.gentics</groupId>
    <artifactId>portalnode-webapp</artifactId>
    <excludes>
      <exclude>**/*</exclude>
    </excludes>
  </overlay>
</overlays>

请注意,这不会减少使用的叠加层数量。

答案 1 :(得分:1)

  

在配置文件中配置叠加排除。要配置叠加,请参阅:   http://maven.apache.org/plugins/maven-war-plugin/overlays.html

该链接指定如何使maven-war-plugin排除特定文件和文件夹。

我想要实现的是根本没有任何叠加,但默认情况下会发生叠加。

到目前为止,我发现的唯一解决方案是将战争依赖项本身放在一个配置文件中,但我对这个解决方案并不满意,因为它有太多的解决方法。

答案 2 :(得分:0)

在配置文件中配置叠加排除。要配置叠加,请参阅: http://maven.apache.org/plugins/maven-war-plugin/overlays.html

答案 3 :(得分:0)

在我的情况下,叠加发生是因为我有类型war的依赖。

我通过将所有这些依赖项放在默认启用的配置文件中来解决我的问题。也许是黑客攻击,但它确实有效。

<profile>
  <id>overlay-active</id>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <configuration>
          <dependentWarExcludes>WEB-INF/lib/*,META-INF/**</dependentWarExcludes>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>myGroup</groupId>
      <artifactId>myWarDepency</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>war</type>
    </dependency>