我有一个包含多个模块的项目。当所有测试都通过时,Maven 测试会运行它们。
当第一个模块中的测试失败时,maven 将不会继续下一个项目。我在 Surefire 设置中将 testFailureIgnore 设置为 true,但它没有帮助。
无论早期失败如何,如何让 Maven 运行所有测试?
mvn help:effective-pom
以确保它在正确的位置......
从 Maven Embedder documentation:
-fae,--fail-at-end 仅在之后使构建失败;允许所有未受影响的构建继续 -fn,--fail-never 永远不要使构建失败,无论项目结果如何
因此,如果您正在测试 one 模块,那么使用 -fae
是安全的。
否则,如果您有多个模块,并且如果您希望对所有模块进行测试(即使是依赖于失败测试模块的模块),您应该运行 mvn clean install -fn
。
-fae
将继续测试失败的模块(将运行所有其他测试),但将跳过所有依赖它的模块。
我刚刚找到了 -fae
参数,它会导致 Maven 运行所有测试并且不会在失败时停止。
使用 <testFailureIgnore>true</testFailureIgnore>
配置 Surefire。
或者在命令行上:
mvn install -Dmaven.test.failure.ignore=true
--fail-at-end or -fae
应该让它继续并在最后使构建失败,尽管它也会跳过依赖模块,请参阅 stackoverflow.com/a/12616700/32453
尝试在根项目的 pom.xml 中为surefire插件添加以下配置:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>
快速回答:
mvn -fn test
适用于嵌套项目构建。
不定期副业成功案例分享
--fail-never
。即使有编译错误,Maven 也不会失败。如果我在 Jenkins 上使用这个选项,即使它有很多编译错误,构建看起来也是成功的。在这种情况下,我更喜欢-Dmaven.test.failure.ignore=true
并让 Jenkins 分析万无一失的报告。pom.xml?
中指定-fae