我想排除我的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
。
跳过测试
从文档 ,如果你想跳过一个测试,你可以使用:
<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>
默认情况下,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>