我想在项目的每个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解决这个问题?
谢谢
答案 0 :(得分:2)
一种(hacky)方法是每次将阶段作为属性传递。类似的东西:
<execution>
<id>jacoco</id>
<phase>${phase}</phase>
<goals>
<goal>dump</goal>
</goals>
</execution>
mvn compile -Dphase=compile
或mvn 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