我们有一个大型的多模块Maven项目。我一直在尝试使用-T选项加速我们的单元测试构建,并取得了一些积极的结果。但是,在我们的项目中有一些依赖路径,如下所示:
模A <-模B <-模C
每个模块的单元测试需要20-30分钟。由于-T选项按其依赖的顺序构建模块,这将导致90分钟的总构建时间。如果我能够首先编译所有模块,然后并行运行A、B和C的测试,那么它将真正加快构建速度。例如:就像这样:
$ mvn -T 10 clean install -DskipTests
$ mvn -T 10 --ignore-dependencies test问题:Maven对此有现成的支持吗?
我一直在尝试编写一个很小的脚本来解析mvn依赖项的输出:树并并行调用"mvn测试-pl A“、"mvn测试-pl B”等等,但是很明显,如果Maven有一个开箱即用的解决方案,那就更好了。
我们正在使用Jenkins,所以如果有一些Jenkins插件,或者Jenkins的特性,而我错过了支持它的功能,那可能会有很大帮助!
注意:加快A、B和C的单元测试将需要大量的工作,并且无法保证单个模块中的测试是可并行的
发布于 2016-03-08 21:58:10
可能的解决办法如下:
testsuite-moduletestsuite-module作用域中的依赖项添加到test中testsuite-module及其构建Helper Maven插件目标将其他模块的所有测试源添加到add-test-source中例如,testsuite-module的POM文件可能如下所示:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.sample</groupId>
<artifactId>modules</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>testsuite-module</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>../module-a/src/test</source>
<source>../module-b/src/test</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.sample</groupId>
<artifactId>module-a</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sample</groupId>
<artifactId>module-b</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>它的唯一作用域是收集其他模块的所有源测试,在测试范围/类路径中包含所需的模块,并通过以下方式执行它们:
mvn -pl testsuite-module test -T 10这将在一次测试执行中执行所有测试,因此可能满足您的要求。
关于这一办法的考虑很少:
testsuite-module对您的项目是无害的,您也可以将其移动到CI配置文件(如果需要的话)(并建议使用),如这是如此的帖子中所解释的add-test-resource目标。https://stackoverflow.com/questions/35875897
复制相似问题