如何永久地在Maven构建排除一个测试类(How to permanently exclude on

2019-10-20 17:03发布

我想排除我的Maven构建一个单一的测试(我不想测试被编译或执行)。 以下不工作:

<project ...>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/MyTest.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

什么是实现我的目标的正确方法是什么? 我知道我可以使用命令行选项-Dmaven.test.skip=true ,但我想这是对的一部分pom.xml

Answer 1:

跳过测试

从文档 ,如果你想跳过一个测试,你可以使用:

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
          <excludes>
            <exclude>**/MyTest.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

见性差异,在你的榜样,您使用<artifactId>maven-compiler-plugin</artifactId> ,以及文档说你建议立即进行删除使用<artifactId>maven-surefire-plugin</artifactId>插件来代替。

而且,如果你想禁用所有的测试,你可以使用:

    <configuration>
      <skipTests>true</skipTests>
    </configuration>

此外,如果你正在使用JUnit ,你可以使用@Ignore ,并添加一条消息。

排除来自编译测试

从这个答案,你可以使用。 诀窍是截距的<id>default-testCompile</id> <phase>test-compile</phase> (默认测试编译阶段),并排除类:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <executions>
    <execution>
      <id>default-testCompile</id>
      <phase>test-compile</phase>
      <configuration>
        <testExcludes>
          <exclude>**/MyTest.java</exclude>
        </testExcludes>
      </configuration> 
      <goals>
        <goal>testCompile</goal>
      </goals>
    </execution>                  
  </executions>
</plugin>


Answer 2:

默认情况下,Maven中跳过测试的编译和执行的最简单方法是在你添加以下属性pom.xml

 <properties>
    <maven.test.skip>true</maven.test.skip>
 </properties>

您仍然可以通过覆盖在命令行的属性更改的行为:

-Dmaven.test.skip=false

或通过激活一个配置文件:

<profiles>
    <profile>
        <id>testing-enabled</id>
        <properties>
           <maven.test.skip>false</maven.test.skip>
        </properties>
    </profile>
</profiles> 


文章来源: How to permanently exclude one test class in a Maven build