执行一个Maven插件目标作为最后一个

时间:2016-10-13 10:42:20

标签: maven

我想在项目的每个Maven版本中运行一个Maven插件目标(jacoco:dump),无论构建阶段如何,它应该是最后执行的目标。

我要实现的一个想法是将jacoco:dump目标链接到编译阶段,以便在每次构建时执行它,但是然后就不可能将dump作为最后阶段的最后一个目标来执行。 / p>

执行顺序

validate -> compile -> (any other phase and plugin goal execution) -> jacoco:dump

因此,如果我使用mvn verify进行构建,则可以在验证阶段之后执行jacoco:dump;如果我使用mvn compile构建,jacoco:dump可以在编译阶段之后执行等。

有没有办法用Maven解决这个问题?

谢谢

2 个答案:

答案 0 :(得分:2)

一种(hacky)方法是每次将阶段作为属性传递。类似的东西:

 <execution>
    <id>jacoco</id>
    <phase>${phase}</phase>
    <goals>
      <goal>dump</goal>
    </goals>
  </execution>

mvn compile -Dphase=compilemvn test -Dphase=test等来电。可能不是最优雅的解决方案,但很容易实现。

答案 1 :(得分:0)

解决方案简单但有效。我们可以直接从命令行运行插件目标,而无需将其配置到项目pom中。 如official documentation中所述,当从命令行运行多个目标时,它们按给定顺序执行,因此我只需将jacoco插件放在命令的尾部:

mvn compile org.jacoco:jacoco-maven-plugin:0.7.7.201606060606:dump sonar:sonar

上面的示例首先编译,然后执行jacoco:dump,然后执行sonar:sonar