如何使用jacoco检查多模块maven项目的最小代码覆盖率?

我想使用jacoco maven插件在构建过程中使用“check”目标检查最低级别的代码覆盖率.

对于单模块项目,一切正常.
但对于多模块,我想检查所有模块的平均代码覆盖水平,但分别检查每个模块的目标检查.

例如,module1具有70%的代码覆盖率,module2具有100%的代码覆盖率,对于来自两个模块的所有行的平均代码覆盖率为85%.
我正在尝试将所有项目的代码覆盖率设置为80%,但由于第一个模块而失败.

来自pom:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.6.201602180812</version>
    <executions>
        <execution>
            <id>default-prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>default-report</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
        <execution>
            <id>default-check</id>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <rules>
                    <rule>
                        <element>BUNDLE</element>
                        <limits>
                            <limit>
                                <counter>COMPLEXITY</counter>
                                <value>COVEREDRATIO</value>
                                <minimum>0.80</minimum>
                            </limit>
                        </limits>
                    </rule>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>

最佳答案 简短回答:不可能(在撰写本文时)仅使用Maven和Jacoco.

official jacoco github page

The current JaCoCo Maven goals work on single modules only: Tests are executed within the module and contribute coverage only to code within the same module. Coverage reports are created for each module separately. There is no built-in support for cross-module coverage or combined reports for multiple modules.

因此,仅使用Maven和Jacoco无法满足您的要求.但是,您可以在企业设置中使用通用方法:Sonarqube,它将处理生成的jacoco文件(即jacoco.exec),并通过其Jacoco集成(在其最新版本中提供开箱即用)汇总报告和治理.

点赞