【发布时间】:2021-05-11 23:04:01
【问题描述】:
我正在尝试在父模块中设置和强制执行代码覆盖,但允许来自子模块的覆盖。特别是 jacoco-maven-plugin 和来自子模块的规则的排除。 我去过: http://maven.apache.org/pom.html#advanced_configuration_inheritance 并尝试了各种组合选项,但均未成功。
在父级中,我有一个插件定义,如下所示:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
...
<configuration>
<rules>
<rule>
<element>CLASS</element>
<limits>
<limit implementation="org.jacoco.report.check.Limit">
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>1.0</minimum>
</limit>
</limits>
</rule>
<rule>
<element>BUNDLE</element>
<limits>
<limit implementation="org.jacoco.report.check.Limit">
<counter>PACKAGE</counter>
<value>COVEREDRATIO</value>
<minimum>1.0</minimum>
</limit>
</limits>
</rule> </rules> </configuration>
在子模块中,我试图避免到处复制和粘贴,但我很难让 maven 插件配置做我想做的事情。
在我的子模块中,我希望有类似的东西:
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<rules>
<rule>
<excludes>
<exclude>*Application*</exclude>
<exclude>*Config*</exclude>
</excludes>
</rule>
</rules>
</configuration>
</plugin>
生成以下有效pom,并将排除项添加到每个规则元素。
<rules>
<rule>
<element>CLASS</element>
<excludes>
<exclude>*Application*</exclude>
<exclude>*Config*</exclude>
</excludes>
<limits>...</limit>
</limits>
</rule>
<rule>
<element>BUNDLE</element>
<excludes>
<exclude>*Application*</exclude>
<exclude>*Config*</exclude>
</excludes>
<limits>...</limits>
</rule> </rules> </configuration>
我尝试了很多插件配置继承属性,但一直无法破解。
combine.self=[合并|覆盖|追加]
combine.children=[合并|覆盖|追加]
<rules combine.self="merge">
<rule>
<excludes combine.children="append">
<exclude>*Application*</exclude>
<exclude>*Config*</exclude>
</excludes>
</rule>
</rules>
但生成的有效 pom 仅包含第一个规则定义,这意味着丢失了 BUNDLE 规则配置
<rules>
<rule>
<element>CLASS</element>
<excludes>
<exclude>*Application*</exclude>
<exclude>*Config*</exclude>
</excludes>
<limits>...</limit>
</limits>
</rule>
是否可以将 maven 配置为为每个子规则元素添加/追加/覆盖此 <excludes/>?
感谢您的任何见解!
【问题讨论】:
标签: maven maven-3 maven-plugin