如果没有任何变化,配置 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 不运行测试的主要内容,如果未能解决你的问题,请参考以下文章

缓存,ETag,Expires ......没有任何作用,必须刷新才能看到变化

maven构建依赖jar文件不反映代码的变化

Qt Designer 不会导致应用程序发生任何变化

如果复选框发生变化,请使用 jquery 调用 php

有没有办法阻止 SVN 的任何变化?

sh 测试参考基因组在wormbase上是否发生了变化;在WS245和WS261之间,没有任何改变!