如果没有任何变化,配置 Maven 不运行测试
Posted
技术标签:
【中文标题】如果没有任何变化,配置 Maven 不运行测试【英文标题】:Configure Maven not to run tests if nothing changed 【发布时间】:2014-12-20 00:43:27 【问题描述】:我们有一个由许多模块组成的大型应用程序,完整构建(带有集成测试)需要长达一个小时。 有没有办法配置 maven,它会跳过模块(甚至类)的测试,没有任何改变? 可能存在一些插件或者可以编写这个插件?
【问题讨论】:
我自己没有尝试过,但最好的方法似乎是这里描述的 maven 增量构建插件:harshana05.blogspot.ch/search?q=incremental+maven 我很想听听您在这方面的成功(因为我们在 GIT 上维护了多模块项目,所有不同的分支都构建在同一个 Jenkins 实例上,因此导致构建场景可能需要24 小时我也考虑仔细看看这个)。 我结合使用 sed/awk 和git diff --name-only
来获取自修订后发生更改的模块,然后执行 mvn -amd -pl modulenames clean install
Maven 并不适合这个。像 Bazel 这样的构建工具。您只能在受影响的部分上构建和运行测试,并且您可以自己确定粒度。
【参考方案1】:
使用命令行时:
mvn -q clean package -DskipTests
【讨论】:
这个命令总是跳过测试。 OP 只想在自给定子模块中上次构建以来没有任何变化的情况下跳过。【参考方案2】:要跳过模块中的测试,您可以在该模块的 pom.xml 中添加:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
[...]
或使用模块 pom.xml 中的配置文件
【讨论】:
这将总是跳过测试。问题是如果没有任何改变就跳过测试。以上是关于如果没有任何变化,配置 Maven 不运行测试的主要内容,如果未能解决你的问题,请参考以下文章