我按照以下说明操作: http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
我正在pom.xml
中使用排除,但似乎无效。
以下是摘录:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>${surefireArgLine}</argLine>
<excludes>
<exclude>${project.basedir}Test1.java</exclude>
</excludes>
</configuration>
</plugin>
答案 0 :(得分:1)
如果您的测试类文件名为Test1.java
,它将自动包含在Surefire的测试类中,因为它与通配符**/Test*.java
匹配(包含默认值之一,请参阅问题中的链接) 。如果您要排除特定测试,则需要更改<exclude>
标记,因为它有2个问题。
(1)您在基础之间没有分隔符(例如${project.basedir}/Test1.java
(2)maven中的类通常在一个目录结构中(如果有一个非默认的包,那么也是一个...应该有)。例如,${project.basedir}/src/test/java/com/foo/Test1.java
你的排除也应该使用通配符:
<exclude>**/Test1.java</exclude>
如果您想跳过所有测试,可以使用skipTests参数:
mvn clean install -DskipTests
答案 1 :(得分:0)
${project.basedir}
指的是module/project
的根文件夹。因此,如果Test1
位于根文件夹下,则一旦您将排除声明更正为default-test
,肯定会被surefire <exclude>${project.basedir}/Test1.java</exclude>
目标排除。
如果根文件夹不是Test1
所在的位置,则将Test1
的位置映射到其他Maven POM变量here或使用通配符,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>${surefireArgLine}</argLine>
<excludes>
<exclude>**/Test1.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
或者更简洁的方法是 create the property for the tests to exclude
,并将其用作maven surefire插件配置的一部分,如下所示:
<properties>
<exclude.tests>**/Test1.java</exclude.tests>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>${surefireArgLine}</argLine>
<excludes>
<exclude>${exclude.tests}</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>