maven的phase和goal
在讲jacoco配置之前,先讲一下maven插件配置的phase
和goal
。
phase
(插件阶段)由goal
(插件目标)构成。phase
其实就是goal
的容器,实际被执行的都是goal
。phase
被执行时,实际执行的都是被绑定到该phase
的goal
。比如执行 mvn package
(这里的package
为phase
), 就包含了validate、 compile、test、package
四个goal
(目标)。
一个goal
(目标)代表一个具体的task
。goal
可以属于某一个phase
,也可以独立存在。例如,如下面的命令:
mvn clean dependency:copy-dependencies package
这里的clean
和package
是一个阶段,dependency:copy-dependencies
是一个独立存在目标。这里clean
阶段将会被首先执行,然后 dependency:copy-dependencies
目标会被执行,最终 package
阶段被执行。
由上可以总结出,goal在一下两种情况下会被触发:
- goal绑定到了某个phase,执行这个phase时会自动执行;
- 通过命令明确执行
mvn <plugin name>:<goal>
,如mvn clean:clean
;
单模块生成单元测试覆盖率报告
单模块场景比较简单,在代码根目录的pom.xml
添加以下配置即可:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<