您不应该在安装阶段之后而是在安装阶段之前调用代理,所以不要调用:
mvn clean install jacoco:prepare-agent jacoco:report
您应该调用
mvn clean jacoco:prepare-agent install jacoco:report
主要原因是:该代理将不参与构建生命周期,该
test阶段将已经作为该
install阶段的一部分执行,然后Maven将根据命令行调用执行该代理,但为时已晚。
您可能还应该将上述插件配置更改为:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.6.201602180812</version> <executions> <execution> <id>jacoco-initialize</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-site</id> <phase>package</phase> <goals> <goal>report</goal> </goals> </execution> </executions></plugin>
注意:我删除了配置部分,因为它实际上指向默认值。而且,XML元素在这里是区分大小写的,因此您的
datafile元素只是被忽略了,应该
dataFile改为。同样适用于
destFile。
该
prepare-agent目标已被
${project.build.directory}/jacoco.exec用作默认destFile值,与
dataFile该
report目标的值相同。进行此更改的主要原因是构建更加灵活和标准,而不依赖
artifactId项目名称(默认名称,但仍不是必需名称),而是使用更通用的
${project.build.directory}属性直接指向target。
最后说明:确保在
build/plugins部分而非
build/pluginManagement/plugins部分中配置Jacoco插件执行。本
pluginManagement部分用于治理和版本或配置的通用协调,但是如果未在下声明相应的插件,它将被
忽略
build/plugins。
根据官方Maven POM参考
pluginManagement
:是在侧面插件中可以看到的元素。插件管理包含插件元素的方式几乎相同,除了不是为该特定项目构建配置插件信息,而是要配置从该继承的项目构建。
但是,这仅配置在子级的plugins元素内实际引用的插件 。孩子们有权覆盖pluginManagement定义。
(注意:粗体是我的)



