【问题标题】:Configure Maven not to run tests if nothing changed如果没有任何变化,配置 Maven 不运行测试
【发布时间】: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 这样的构建工具。您只能在受影响的部分上构建和运行测试,并且您可以自己确定粒度。

标签: java maven maven-2 maven-3 maven-plugin


【解决方案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 中的配置文件

【讨论】:

  • 这将总是跳过测试。问题是如果没有任何改变就跳过测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2019-12-12
  • 2021-12-16
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多