我发现仅跳过surefire测试的最简单方法是按以下方式配置surefire(但不能配置failsafe):
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<!-- skips surefire tests without skipping failsafe tests.
Property value seems to magically default to false -->
<skipTests>${skip.surefire.tests}</skipTests>
</configuration>
</plugin>
这使您可以运行,mvn verify -Dskip.surefire.tests并且仅跳过surefire(而非故障安全)测试;它还将运行所有其他必要阶段,包括集成前和集成后,并且还将运行verify目标,如果集成测试失败,该目标实际上会使您的maven构建失败。
请注意,这重新定义了用于指定应跳过测试的属性,因此,如果提供了canonical属性-DskipTests=true,则surefire将忽略它,但failsafe将尊重它,这可能是意外的,特别是如果您已经具有指定该标志的现有内部版本/用户。简单的解决方法似乎是默认skip.surefire.tests的值设置为skipTests您<properties>聚甲醛的部分:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
如果需要,可以提供一个称为skip.failsafe.tests故障安全的类似参数,但是我没有必要这样做-因为单元测试通常在较早的阶段运行,并且如果我要运行单元测试而不是集成测试,则可以运行的test阶段,而不是verify阶段。您的经历可能会有所不同!
这些skip.(surefire|failsafe).tests属性可能应该集成到surefire / failsafe代码本身中,但是我不确定它会违反“除了1个细微差别之外,它们是完全相同的插件”的精神。
maven.test.skip还是skipTests?