如何将com.org.projectname.model包从SonarQube覆盖率统计中排除
解决方案
方案1:修正jacoco-maven-plugin配置
你之前的配置未生效是两个原因导致:
- 路径匹配规则错误:
**/com/org/projectname/model/*.class仅能匹配model包下的直接一级类,无法匹配model子包下的类、内部类;你第一次尝试的**/model /*.class路径中间存在多余空格,直接导致规则失效。 - 配置位置错误:你将
<excludes>放在plugin全局配置节点,但两个<execution>节点都自定义了<configuration>,会覆盖全局配置,导致排除规则不生效。
正确配置示例如下,将排除规则加到报告生成的执行节点配置中:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.6</version> <executions> <execution> <id>pre-unit-test</id> <goals> <goal>prepare-agent</goal> </goals> <configuration> <destFile>target/coverage-data/jacoco-ut.exec</destFile> <propertyName>surefireArgLine</propertyName> </configuration> </execution> <execution> <id>post-unit-test</id> <phase>test</phase> <goals> <goal>report</goal> </goals> <configuration> <dataFile>target/coverage-data/jacoco-ut.exec</dataFile> <outputDirectory>target/coverage-reports/jacoco-ut</outputDirectory> <!-- 新增排除规则 --> <excludes> <exclude>**/com/org/projectname/model/**/*.class</exclude> </excludes> </configuration> </execution> </executions> </plugin>
配置完成后执行mvn clean test,查看target目录下生成的jacoco报告,确认model包已被排除后再推送到SonarQube即可。
方案2:直接通过SonarQube配置排除(更简便)
如果不需要修改jacoco本地报告,仅需要SonarQube统计覆盖率时排除该包,直接在pom文件的<properties>节点添加如下配置即可,优先级高于jacoco侧配置:
<properties> <!-- 其他properties配置 --> <sonar.coverage.exclusions>**/com/org/projectname/model/**/*</sonar.coverage.exclusions> </properties>
如果是多模块项目,该配置放在父pom的properties中即可全局生效。
内容的提问来源于stack exchange,提问作者ima.technophyle
相关产品推荐
相关产品推荐

