在多模块maven项目的maven测试构建期间忽略模块

时间:2012-02-14 15:47:09

标签: java maven maven-3

是否可以在多模块maven项目中运行maven测试版本(mvn clean test)并跳过/忽略特定模块的测试?像-Dmaven.test.skip=true但是对于特定模块而不是所有模块?我不想更改surefire <configuration>以包含<skipTests>true</skipTests>我要跳过测试的模块。我想知道是否可以从命令行完成此操作。我需要这个,因为在我的项目中我有很多模块,特别是一两个需要很长时间才能执行测试,所以当我只想测试几个模块时,我想跳过这些时间我不需要模块做了任何改变。

2 个答案:

答案 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选项仅排除长时间执行的一个或两个测试。