我如何使用Maven从战争中排除某些叠加层衍生的目录?

时间:2018-10-30 18:48:16

标签: maven

我们使用maven 3.5.0和maven-war-plugin构建了一个Webapp。我们有很多叠加层,其中许多叠加层都有一个tests目录,其中包含用于在开发环境中测试某些事物的JSP文件。我们不希望这些被包括在我们的战争中。

我们尝试了以下操作:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <overlays>...</overlays>
        <warSourceExcludes>tests</warSourceExcludes>
    </configuration>
</plugin>

这没有用,也没有几个configuration的变体:

<packagingExcludes>tests</packagingExcludes>

<packagingExcludes>**/${project.artifactId}/tests/**</packagingExcludes>

这是由于我天真的滥用配置选项引起的,还是与叠加层的处理方式有关?

2 个答案:

答案 0 :(得分:1)

您应该使用<excludes>..</excludes>(请参阅https://maven.apache.org/plugins/maven-war-plugin/overlays.html)而不是<packagingExcludes>..</packagingExclude> ...

 ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.2</version>
        <configuration>
          <overlays>
            <overlay>
              <groupId>com.example.projects</groupId>
              <artifactId>documentedprojectdependency</artifactId>
              <excludes>
                <exclude>WEB-INF/classes/images/sampleimage-dependency.jpg</exclude>
              </excludes>
            </overlay>
          </overlays>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...

答案 1 :(得分:0)

dependentWarExcludes元素用于消除tests目录及其内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <overlays>...</overlays>
        <dependentWarExcludes>tests/**</dependentWarExcludes>
    </configuration>
</plugin>