是否可以在多模块maven项目中运行maven测试版本(mvn clean test
)并跳过/忽略特定模块的测试?像-Dmaven.test.skip=true
但是对于特定模块而不是所有模块?我不想更改surefire <configuration>
以包含<skipTests>true</skipTests>
我要跳过测试的模块。我想知道是否可以从命令行完成此操作。我需要这个,因为在我的项目中我有很多模块,特别是一两个需要很长时间才能执行测试,所以当我只想测试几个模块时,我想跳过这些时间我不需要模块做了任何改变。
答案 0 :(得分:5)
更改surefire插件的配置确实是个问题吗?因为您只能在模块中更改一次...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<configuration>
<skipTests>${skip.foo.module.tests}</skipTests>
</configuration>
</plugin>
</plugins>
</build>
...并将skipTests标记的true / false值委托给maven属性,由专用的配置文件激活:
<properties>
<skip.foo.module.tests>false</skip.foo.module.tests>
</properties>
<profiles>
<profile>
<id>SKIP_FOO_MODULE_TESTS</id>
<properties>
<skip.foo.module.tests>true</skip.foo.module.tests>
</properties>
</profile>
</profiles>
这样您就可以使用命令行停用Foo模块中的测试:
mvn clean test -P SKIP_FOO_MODULE_TESTS
答案 1 :(得分:0)
您可以使用配置了surefire跳过的配置文件来完成此操作。这允许您在大多数时间保持测试运行,但是当您想要在某个时间跳过其中一个模块的测试时,您可以调用该配置文件。然后,您可以使用跳过测试排除所有测试,或者可以使用excludes选项仅排除长时间执行的一个或两个测试。