maven Jacoco report-aggregate -包括聚合项目的报告

tcbh2hod  于 2023-06-21  发布在  Maven
关注(0)|答案(5)|浏览(364)

我有一个多模块的Maven项目。

parent
   child1
   child2
   child3-report

所有子项目都有单元测试,child3依赖于child1child2。在child3的pom之后

<plugin>
     <groupId>org.jacoco</groupId>
     <artifactId>jacoco-maven-plugin</artifactId>
     <version>0.8.2</version>
     <executions>
        <execution>
            <id>prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report-aggregate</id>
            <phase>verify</phase>
            <goals>
                <goal>report-aggregate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

生成的jacoco聚合报告仅包括child1和child2的报告,但不包括child3的报告。如何解决这个问题?
不想只为报告创建第四子模块。

mwecs4sa

mwecs4sa1#

我在为Maven项目实现Jacoco时也遇到过同样的问题。不幸的是,恐怕唯一的解决方案是向Maven项目添加一个新的子模块。你应该把它依赖于你的3个子模块和报告聚合目标。所以,你应该有如下配置:

parent --> Goal: Prepare agent
   child1 --> Goal: report
   child2 --> Goal: report
   child3-report --> Goal: report
   child4-Aggregator --> Goal: report-aggregate

在父pom.xml中,您应该添加child 4-Aggregator模块作为要运行的最后一个模块。

ygya80vv

ygya80vv2#

我所做的是添加一个报告目标,以包括模块本身的报告。

<execution>
  <id>report-unit-tests</id>
  <goals>
    <goal>report</goal>
  </goals>
</execution>
cbeh67ev

cbeh67ev3#

在jacoco github repo上有多个与此功能相关的问题(https://github.com/jacoco/jacoco/issues/812)。对于少数人来说,为报告设置单独的模块可能是可以接受的,但是更好的方法是使用一些可配置的标志来解决这个问题。
还有一个挂起的PR(https://github.com/jacoco/jacoco/pull/1007)。

ryevplcw

ryevplcw4#

所提到的PR@sidgate被合并。现在您可以在maven中配置它,如下所示:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>report-aggregate</id>
            <goals>
                <goal>report-aggregate</goal>
            </goals>
            <phase>verify</phase>
            <configuration>
                <includeCurrentProject>true</includeCurrentProject>
            </configuration>
        </execution>
    </executions>
</plugin>

还考虑文档。

ssm49v7z

ssm49v7z5#

也许你可以试试这个:在child3的pom.xml中添加child3本身

<dependency>
<groupId>XXXX</groupId>
<artifactId>child3</artifactId>
</dependency>

相关问题