【问题标题】:Include Jacoco repots in Maven site在 Maven 站点中包含 Jacoco 报告
【发布时间】:2022-02-10 15:17:18
【问题描述】:

我已经在我的项目中集成了jacoco-maven-plugin,基于这个优秀的指南:http://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-integration-tests-with-the-jacoco-maven-plugin/

Jacoco 插件运行良好。但是,maven-site-plugin 不包括站点中的 Jacoco 报告。更具体地说:“项目报告”部分没有列出 Jacoco 报告。 Jacoco 报告本身可在target/site/jacoco-uttarget/site/jacoco-it 目录中找到。

这就是我所做的(到目前为止没有成功)。

首先,将jacoco-maven-plugin 作为插件包含在我的pom.xmlbuild 部分中,如上面引用的指南中所述。我正在使用 Jacoco 版本 0.6.4.201312101107。

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${jacoco.plugin.version}</version>
  <executions>
    <!-- scissors... -->
    <!-- report goal is bound to the pre-site phase -->
  </executions>
</plugin>

其次,将jacoco-maven-plugin 包含在我的pom.xmlreport 部分中:没有成功。

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${jacoco.plugin.version}</version>
</plugin>

第三,尝试在report部分的jacoco-maven-plugin中添加reportsets部分:没有成功。

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${jacoco.plugin.version}</version>
  <reportSets>
    <reportSet>
      <reports>
        <report>report</report>
      </reports>
    </reportSet>
  </reportSets>
</plugin>

谁能帮我让maven-site-plugin 引用 Jacoco 在网站“项目报告”部分生成的覆盖率报告?

【问题讨论】:

    标签: maven plugins jacoco


    【解决方案1】:

    我发现 jacoco 很棘手,下面的配置对我有用,我把它从博客的点点滴滴拼凑起来 在属性中

    <jacoco.reportPath>${main.basedir}/target/jacoco.exec</jacoco.reportPath>
        <jacoco.itReportPath>${main.basedir}/target/jacoco-it.exec</jacoco.itReportPath>
    

    在构建内部

    <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.6.4.201312101107</version>
                    <executions>
                        <execution>
                            <id>pre-unit-test</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                            <configuration>
                                <destFile>${sonar.jacoco.reportPath}</destFile>
                                <propertyName>utCoverageAgent</propertyName>
                            </configuration>
                        </execution>
                        <execution>
                            <id>post-unit-test</id>
                            <phase>test</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                            <configuration>
                                <dataFile>${sonar.jacoco.reportPath}</dataFile>
                            </configuration>
                        </execution>
                        <!-- prepare agent for measuring integration tests -->
                        <execution>
                            <id>agent</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                            <configuration>
                                <destFile>${sonar.jacoco.itReportPath}</destFile>
                                <propertyName>itCoverageAgent</propertyName>
                            </configuration>
                        </execution>
                        <execution>
                            <id>jacoco-site</id>
                            <phase>post-integration-test</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                            <configuration>
                                <dataFile>${sonar.jacoco.itReportPath}</dataFile>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
           <!-- Reporting plugins -->
            <plugin>
                <artifactId>maven-site-plugin</artifactId>
                <version>${plugin.site.version}</version>
                <configuration>
                    <attach>true</attach>
                    <reportPlugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-changelog-plugin</artifactId>
                            <version>2.2</version>
                            <configuration>
                                <type>range</type>
                                <range>1</range>
                                <!--<displayFileDetailUrl>${project.scm.url}/tree/master/%FILE%</displayFileDetailUrl>-->
                                <headingDateFormat>MM-dd-yyyy</headingDateFormat>
                                <outputEncoding>${project.reporting.outputEncoding}</outputEncoding>
    
                            </configuration>
                            <reports>
                                <report>changelog</report>
                            </reports>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-project-info-reports-plugin</artifactId>
                            <version>2.7</version>
                            <configuration>
                                <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
                                <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
                            </configuration>
                            <!-- simpler configuration without reportSets available for usual cases -->
                            <!-- distribution-management, index, dependencies, help, issue-tracking, plugins, cim,
                            license, dependency-management, mailing-list, project-team, dependency-convergence,
                            scm, plugin-management, modules, summary -->
                            <reports>
                                <report>index</report>
                                <report>dependencies</report>
                                <report>issue-tracking</report>
                                <report>scm</report>
                                <report>summary</report>
                            </reports>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-jxr-plugin</artifactId>
                            <version>2.4</version>
                            <configuration>
                                <aggregate>true</aggregate>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <version>2.9.1</version>
                                <reports>
                                    <report>javadoc</report>
                                    <report>aggregate</report>
                                </reports>
                            <configuration>
                                <failOnError>false</failOnError>
                            </configuration>
                        </plugin>
    
                        <plugin>
                            <groupId>org.jacoco</groupId>
                            <artifactId>jacoco-maven-plugin</artifactId>
                            <version>0.6.4.201312101107</version>
                        </plugin>
    
                    </reportPlugins>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-descriptor</id>
                        <goals>
                            <goal>attach-descriptor</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    

    希望有帮助!

    【讨论】:

    【解决方案2】:

    我所做的是将两个执行文件(jacoco-ut.execjacoco-it.exec)合并到一个名为 jacoco.exec 的文件中,然后将该文件设置为插件的 dataFile

    首先,让我们定义这些属性:

    <jacoco.it.execution.data.file>${project.build.directory}/coverage-reports/jacoco-it.exec</jacoco.it.execution.data.file>
    <jacoco.ut.execution.data.file>${project.build.directory}/coverage-reports/jacoco-ut.exec</jacoco.ut.execution.data.file>
    <jacoco.execution.data.file>${project.build.directory}/coverage-reports/jacoco.exec</jacoco.execution.data.file>
    

    然后,连同生成报告的配置,包括这个 sn-p 以创建合并文件:

    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco-plugin.version}</version>
        <executions>
            ...
            <execution>
                <id>merge</id>
                <phase>verify</phase>
                <goals>
                    <goal>merge</goal>
                </goals>
                <configuration>
                    <fileSets>
                        <fileSet>
                            <directory>${project.build.directory}/coverage-reports</directory>
                            <includes>
                                <include>*.exec</include>
                            </includes>
                        </fileSet>
                    </fileSets>
                    <destFile>${jacoco.execution.data.file}</destFile>
                </configuration>
            </execution>
            <execution>
                <id>report-merge</id>
                <phase>verify</phase>
                <goals>
                    <goal>report</goal>
                </goals>
                <configuration>
                    <dataFile>${jacoco.execution.data.file}</dataFile>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    最后,配置 reporting 部分中的插件以从该合并文件生成报告:

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <configuration>
                    <dataFile>${jacoco.execution.data.file}</dataFile>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            ...
        </plugins>
    </reporting>
    

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 2015-07-19
      • 2010-10-10
      • 2020-06-28
      • 2014-05-15
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多