有没有办法从文件中加载 Maven Surefire 插件排除列表?

Is there a way to load Maven Surefire Plugin exclusions list from a file?

在 Surefire 插件中,您有一个 exclusions 文件列表(或正则表达式),如下所示:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19.1</version>
        <configuration>
          <excludes>
            <exclude>**/TestCircle.java</exclude>
            <exclude>**/TestSquare.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

我想将一堆与正则表达式不匹配的文件添加到我的排除列表中。这个列表大约有 200 个文件(一个古怪的集合)。我想将这些文件从外部文件添加到我的 Maven pom.xml

不过我认为有 a way to do this using the maven properties plugin. I can't see how that would load a variable into a list

有没有办法从文件加载排除列表?

Surefire 插件为此提供了配置元素,称为 excludesFile:

A file containing exclude patterns. Blank lines, or lines starting with # are ignored. If excludes are also specified, these patterns are appended. Example with path, simple and regex excludes: */test/*
**/DontRunTest.*
%regex[.*Test.*|.*Not.*]

它作为 SUREFIRE-1065 and SUREFIRE-1134 的一部分在插件的 2.19 版中引入。因此,您可以在项目的基本目录中直接拥有一个名为 surefireExcludes.txt 的文件,其中包含

**/TestCircle.java
**/TestSquare.java
# **/TestRectangle.java A commented-out pattern

然后配置插件:

<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.19.1</version>
  <configuration>
    <excludesFile>surefireExcludes.txt</excludesFile>
  </configuration>
</plugin>

所有测试都将是 运行,除了那些与文件中指定的模式相匹配的测试。如果以 # 开头,则模式甚至可以是 commented-out。这也可以直接在 command-line 上与 surefire.excludesFile 用户 属性 一起传递,即:

mvn clean test -Dsurefire.excludesFile=surefireExcludes.txt

相反的要求也存在参数includesFile