我正在使用以下SureFire配置构建Maven项目:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.maven-surefire-plugin}</version>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
问题是,当我使用mvn clean install -DskipTests=true
构建它时,测试仍在执行中。可能是什么问题呢?
我尝试了两个-DskipTests
(来自Maven website)和-DskipTests=true
,当我选中“跳过测试”复选框时,它由IntelliJ Idea添加。
我不使用任何Maven settings.xml
。
修改 如果我注释掉SureFire插件配置,该参数的行为与我期望的一样。上面的配置可能有什么问题?
答案 0 :(得分:27)
Maven知道跳过测试的两种参数:
-Dmaven.test.skip=true
或
-DskipTests=true
surefire-plugin documentation只提到了第一个,你还没有尝试过。
答案 1 :(得分:9)
你做了什么应该工作。如何进一步调试:
运行mvn help:effective-pom
以查看Maven将执行的整个POM。搜索test
(不区分大小写)以查看是否存在奇怪的内容。
运行mvn test -X
以获取调试输出。这将打印用于配置maven-surefire-plugin
的选项。确保将输出重定向到文件!
在日志中,您将看到
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.15:test' with basic configurator -->
然后,在下面的一些行:
[DEBUG] (s) runOrder = filesystem
[DEBUG] (s) skip = false
[DEBUG] (s) skipTests = false
这些值意味着不会跳过测试。
您使用的是最新版本的插件吗? Check here。您的版本可能不支持此选项。
答案 2 :(得分:1)
考虑到您使用的是版本2.3,它不是-DskipTests=true
只是-DskipTests
所以你将其作为
运行mvn install -DskipTests
答案 3 :(得分:1)
我不确定为什么还没有发布正确的答案。在旧版本的SureFire中,编译测试但不运行它们的标志是var reader = XmlReader.Create(@"file://c:\test.xml");
var document = XElement.Load(reader);
document.Add(new XElement("branch", "leaves"));
document.Save("Tree.xml");
。
答案 4 :(得分:0)
为您的surefire插件尝试以下配置
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.surefire.plugin}</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
答案 5 :(得分:0)
这是一个古老的问题,但也许我的案例对某人有所帮助。
因此,-DskipTests / -DskipTests = true / -DskipITs / etc无效,我也不知道为什么。
我的父母<profiles>
中有pom.xml
,并且问题出在surefire / failsafe的配置中。
<profiles>
<profile>
<id>unit-test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>integration-test</id>
<properties>
<skip.unit-tests>true</skip.unit-tests>
<skip.integration-tests>false</skip.integration-tests>
<skip.end-to-end-tests>true</skip.end-to-end-tests>
</properties>
</profile>
...
</profiles>
在插件配置中,我使用如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<skipTests>${skip.unit-tests}</skipTests>
</configuration>
...
</plugin>
此命令无效:
mvn clean install -DskipTests -DskipITs
这有效:
mvn clean install -Dskip.unit-tests=true -Dskip.integration-tests=true -Dskip.end-to-end-tests=true