美文网首页
jacoco 项目包含单模块和多模块

jacoco 项目包含单模块和多模块

作者: Leoguo小哥 | 来源:发表于2025-08-20 17:12 被阅读0次

本地调试执行


mvn  -Dmaven.test.skip=false -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -U clean verify org.jacoco:jacoco-maven-plugin:0.8.8:report-aggregate sonar:sonar -Dsonar.projectKey=code-diff         -Dsonar.host.url=https://test-sonarqube.internal.com         -Dsonar.token=sqa_37c31****         -Dsonar.coverage.jacoco.xmlReportPaths=${pwd}/aggregate-report/target/site/jacoco/jacoco.xml #这里传绝对路径

1、多模块需要创建一个新的子模块,名字【aggregate-report】

a、新的子模块添加需要扫描的模块依赖【dependency】


image.png
<dependencies>
        <!-- 显式依赖所有子模块,确保聚合报告能收集到数据 -->
        <dependency>
            <groupId>com.app.engine</groupId>
            <artifactId>app-engine-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.app.engine</groupId>
            <artifactId>app-engine-service</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.app.engine</groupId>
            <artifactId>app-engine-web</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

b、新的子模块pom中添加jacoco的依赖

<build>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.11</version>
                <executions>
                    <execution>
                        <id>jacoco-report-aggregate</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>report-aggregate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2、父pom中添加org.apache.maven和surefire依赖

image.png
<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.2.5</version>
                <configuration>
                    <skipTests>false</skipTests>
                    <testFailureIgnore>true</testFailureIgnore>
                    <argLine>${jacocoArgLine}</argLine> <!-- ✅关键 -->
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.11</version>
                <executions>
                    <execution>
                        <id>my-prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <configuration>
                            <propertyName>jacocoArgLine</propertyName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.sonarsource.scanner.maven</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>${sonar-maven-plugin.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.2.5</version>
                <configuration>
                    <skipTests>false</skipTests>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>

        </plugins>
image.png
<properties>
        <sonar.coverage.jacoco.xmlReportPaths>
            aggregate-report/target/site/jacoco-aggregate/jacoco.xml
        </sonar.coverage.jacoco.xmlReportPaths>
</properties>
可执行shell脚本,自动区分单模块还是多模块

!/bin/bash

set -e

========================

固定参数(可改成从外部传入)

========================

SONAR_PROJECT_KEY="app-engine-test"
SONAR_HOST_URL="https://test-sonarqube.internal.com"
SONAR_TOKEN="squ_***"
SONAR_TIMEOUT=300

========================

获取当前项目根目录绝对路径

========================

PROJECT_ROOT=$(pwd)

========================

判断是否是多模块项目

========================

if grep -q "<modules>" pom.xml; then
echo "✅ 检测到多模块项目"
REPORT_GOAL="org.jacoco:jacoco-maven-plugin:0.8.8:report-aggregate"

多模块使用绝对路径

REPORT_PATH="${PROJECT_ROOT}/aggregate-report/target/site/jacoco-aggregate/jacoco.xml"
else
echo "✅ 检测到单模块项目"
REPORT_GOAL="org.jacoco:jacoco-maven-plugin:0.8.8:report"

单模块使用相对路径

REPORT_PATH="target/site/jacoco/jacoco.xml"
fi

========================

执行 Maven + Jacoco + Sonar

========================

echo "🚀 开始执行: REPORT_GOAL" echo "📄 覆盖率报告路径:REPORT_PATH"

mvn -Dmaven.test.skip=false -B
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
-U clean verify {REPORT_GOAL} sonar:sonar \ -Dsonar.projectKey={SONAR_PROJECT_KEY}
-Dsonar.host.url={SONAR_HOST_URL} \ -Dsonar.token={SONAR_TOKEN}
-Dsonar.coverage.jacoco.xmlReportPaths={REPORT_PATH} \ -Dsonar.ws.timeout={SONAR_TIMEOUT}

相关文章

  • maven multi-module(多模块)项目集成Jacoc

    单模块集成Jacoco比较简单,网上有很多教程,基本上也不会出现什么问题。 问题: 多模块项目中,测试用例在一个模...

  • spring boot多模块配置

    目标,创建多模块的spring boot项目。包含三个模块producer consumer model 其中 p...

  • 【IDEA】搭建聚合项目抛Unable to find main

    背景 项目是springboot,分多模块:common公共模块、order订单模块和stock库存模块。项目在i...

  • (XIII)反应堆 Reactor

    反应堆是指所有模块组成的一个构建结构。对于单模块的项目,反应堆就是该模块本身,但是对于多模块项目来说,反应堆就包含...

  • Android开发--Gradle--多模块构建(五)

    一、多模块构建 通常情况下,一个工程包含多模块,这些模块会在一个父目录文件夹下。为了告诉gradle,该项目的结构...

  • Android studio 项目概览

    模块 模块是源文件和构建设置的集合,允许您将项目分成不同的功能单元。您的项目可以包含一个或多个模块,并且一个模块可...

  • 项目工程化设计原则

    单业务模块化根据业务归纳进单个模块,模块与模块间具有物理文件独立性,便于开发团队协作开发项目和维护代码。 模块二百...

  • Module-Starter

    简介 Module-Starter 项目中包含多个模块,他们协同工作完成创建项目骨架的任务。在这个项目中包含的模块...

  • [Gradle中文教程系列]-跟我学Gradle-8.3-多模块

    上一节:多模块项目- 项目结构 我们了解到一个典型的多模块项目需要有一个根模块项目以及模块描述文件(默认为sett...

  • 2018-01-11 记录一个springboot+多模块的坑

    springboot多模块项目无法加载configuration配置类 用父项目+多模块+多模块的结构配置了一个s...

网友评论

      本文标题:jacoco 项目包含单模块和多模块

      本文链接:https://www.haomeiwen.com/subject/daefajtx.html