gpt4 book ai didi

maven - 如何在子项目中添加更多 Jacoco 排除项?

转载 作者:行者123 更新时间:2023-12-02 04:08:38 61 4
gpt4 key购买 nike

在父 POM 中,我们设置了 Jacoco 规则来强制执行测试覆盖。这包括对通常没有行为的类的一些排除:

<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<excludes>
<!-- exclude largely auto-generated domain and model classes -->
<exclude>**/model/*.class</exclude>
<exclude>**/model/**/*.class</exclude>
<exclude>**/domain/*.class</exclude>
<exclude>**/domain/**/*.class</exclude>
<exclude>**/dto/*.class</exclude>
<exclude>**/dto/**/*.class</exclude>
</excludes>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit implementation="org.jacoco.report.check.Limit">
<counter>INSTRUCTION</counter>
<value>COVEREDRATIO</value>
<minimum>0.70</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>

在使用该父级的子 POM 中,Maven 添加额外排除类模式的魔力是什么?

我正在尝试以各种方式使用 combine... 属性,但无法正确生成有效的 POM。

有什么想法吗?

最佳答案

您不能扩展列表,但可以覆盖它。大多数时候,您需要每个模块的特定排除列表(不同模块中完全相同的类型多久出现一次?)

为此,不要在父 POM 中放置任何排除项。只需将标准/共享执行及其配置放在那里。在子 POM 中:

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>

<configuration>
<excludes>
<exclude>ch/swissquant/toolbox/exceptions/**/*.class</exclude>
<exclude>ch.swissquant.toolbox.exceptions.*</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

Maven 将读取此配置并将其与它在父 POM 中找到的任何执行合并(因此它将应用于复杂的 Jacoco 流程的所有步骤)。

合并的工作方式如下:Maven 读取父 POM,然后用子 POM 中的任何特定值覆盖它(最后一个条目获胜)。对于属性也是如此,因此您可以使用属性为父项中的覆盖率定义默认值,并重新定义子项中的属性。

您可以通过运行 mvn help:effective-pom 来验证这一点。

关于maven - 如何在子项目中添加更多 Jacoco 排除项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085451/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com