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

Java 在多模块maven项目的maven测试构建期间忽略模块,java,maven,maven-3,Java,Maven,Maven 3,是否可以在多模块maven项目中运行maven测试构建(mvn clean test),并跳过/忽略特定模块的测试?像-Dmaven.test.skip=true但是对于特定模块而不是所有模块?我不想将surefire更改为包含我要跳过测试的模块的true。我想知道这是否可以从命令行完成。我需要这一点,因为在我的项目中,我有许多模块,其中一个或两个模块执行测试需要很长时间,所以当我只想测试两个模块时,我想跳过这些我没有做任何更改的耗时模块。您可以通过配置surefire跳过的配置文件来完成这一点

是否可以在多模块maven项目中运行maven测试构建(
mvn clean test
),并跳过/忽略特定模块的测试?像
-Dmaven.test.skip=true
但是对于特定模块而不是所有模块?我不想将surefire
更改为包含我要跳过测试的模块的
true
。我想知道这是否可以从命令行完成。我需要这一点,因为在我的项目中,我有许多模块,其中一个或两个模块执行测试需要很长时间,所以当我只想测试两个模块时,我想跳过这些我没有做任何更改的耗时模块。

您可以通过配置surefire跳过的配置文件来完成这一点。这将允许您在大部分时间内保持测试运行,但是当您想在某个时候跳过其中一个模块的测试时,您可以调用该概要文件。然后,您可以使用跳过测试排除所有测试,也可以使用排除选项仅排除一个或两个长时间执行的测试。

更改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>

org.apache.maven.plugins
maven surefire插件
2.12
${skip.foo.module.tests}
。。。并将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清洁测试-p跳过模块测试

是。你需要仔细阅读《见也谢谢你的跳蚤》。虽然这不完全是我想要的,但这对我来说很有用。使用这种方法,我一次可以有一个概要文件,所以如果我想跳过多个模块的测试,我不能。但无论如何,这可能有点太多了。您的模块可以共享相同的父pom,您可以在其中定义配置文件。是什么阻止您使用相同的配置文件同时跳过几个子模块上的测试?只有当我想一直跳过相同的模块时,这才有效。当我在开发时,有时我会对模块1进行更改,这不会影响模块7和模块9,所以我想跳过这些,但在其他时间,如果我对模块3进行更改,这会影响模块7,但不会影响模块9,在这种情况下,我只想跳过模块9。对于这种情况,在父级中共享配置文件将不起作用。现在我不想因为各种各样的配置文件跳过不同模块和组合的测试而污染我的父pom。实际上,您真正想要的不仅仅是跳过某些模块的测试,而是在给定时刻只构建整个项目的一个树部分,是吗?在这种情况下,考虑构建选项-PL。它只允许构建项目的一个子集。maven reactor将只构建在-pl之后传递的模块列表以及它们所依赖的模块。谢谢Yanfhile。你的投入确实帮了大忙。