jacoco + ant 监控远程服务器上springboot应用的代码覆盖率

参考博客:

https://blog.csdn.net/qq_26392615/article/details/82228972 

大概步骤:

1、远程服务器上安装jacoco

2、本地安装ant + jacoco

3、重启远端服务,加上javaagent 参数,nohup java -javaagent:/root/jacoco/lib/jacocoagent.jar=includes=*,output=tcpserver,port="未被占用的端口",address="服务器的地址",如果服务部署在docker容器里,此处的port和address是服务器上对外的port 和 address,不是docker里面的port和ip

4、build.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<project name="JaCoCo" default="run" xmlns:jacoco="antlib:org.jacoco.ant">
    <!--Jacoco的安装路径-->
    <!--
    <property name="jacocoAntPath" value="/home/yunpan/src/jacoco/lib/jacocoant.jar"/> -->
    <property name="jacocoAntPath" value="D:\work\jacoco\lib\jacocoant.jar"/>

    <!--生成.exec文件的路径,Jacoco就是根据这个文件生成HTML报告的-->
    <!--<property name="jacocoExecPath" value="/home/yunpan/test/exec"/> -->
    <property name="jacocoExecPath" value="D:\work\jacoco\work-space\exec"/>
    
    <!--生成覆盖率报告的路径-->
    <!--<property name="jacocoReportPath" value="/home/yunpan/test/report"/>-->
    <property name="jacocoReportPath" value="D:\work\jacoco\work-space\report"/>
    
    
    <!--远程服务的ip地址,如果用的是docker部署的,此处填的ip和端口不是docker内部的ip而是服务器的ip和端口,
    	服务器的端口需要与docker容器内java应用的端口做映射 -->
    <property name="server_ip" value=""/>
    <!--前面javaagent配置的远程服务打开的端口,要跟上面配置的一样-->
    <property name="server_port_yunpan" value=""/>
 
    <!--源代码路径-->
    <!--yunpan项目-->
    <property name="yunpan_apiSrcPath" value="D:\work\jacoco\work-space\source\test\cloud-storage-server\service-api\src\main\java"/>
    <property name="yunpan_providerSrcPath" value="D:\work\jacoco\work-space\source\test\cloud-storage-server\service-provider\src\main\java"/>
    <property name="yunpan_webSrcPath" value="D:\work\jacoco\work-space\source\test\cloud-storage-server\web-start\src\main\java"/>
 
    <!--.class文件路径-->
    <!--yunpan项目-->
    <!--
    <property name="yunpan_apiClassesPath" value="/home/yunpan/test/target/service-api/target/classes"/>
    <property name="yunpan_providerClassesPath" value="/home/yunpan/test/target/service-provider/target/classes"/>
    <property name="yunpan_webClassesPath" value="/home/yunpan/test/target/web-start/target/classes"/> -->
    <property name="yunpan_ClassesPath" value="D:\work\jacoco\work-space\BOOT-INF\classes"/>
   
 
    <!--让ant知道去哪儿找Jacoco-->
    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
        <classpath path="${jacocoAntPath}"/>
    </taskdef>
 
    <target name="run">
        <echo message="start..."/>
        <echo message="dump..."/>
        <antcall target="dump"/>
        <echo message="merge..."/>
        <antcall target="merge"/>
        <echo message="report..."/>
        <antcall target="report"/>
        <echo message="end..."/>
    </target>
 
    <!--dump任务:
        根据前面配置的ip地址,和端口号,访问目标服务,并生成.exec文件。
        reset=true时,会在dump出exec文件后,清空覆盖率数据;
        append=false时,dump出的exec文件会覆盖原有的exec文件;append=true时,dump出的exec文件     
        追加至原有的exec文件;
    -->
    <target name="dump">
        <jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoExecPath}/jacoco_yunpan_api.exec" port="${server_port_yunpan}" append="true"/>
        <jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoExecPath}/jacoco_yunpan_provider.exec" port="${server_port_yunpan}" append="true"/>
        <jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoExecPath}/jacoco_yunpan_web.exec" port="${server_port_yunpan}" append="true"/>
    </target>
 
    <target name="merge">
        <jacoco:merge destfile="${jacocoExecPath}/merged.exec">
            <fileset dir="${jacocoExecPath}" includes="*.exec"/>
        </jacoco:merge>
    </target>
 
    <!--jacoco任务:
         根据前面配置的源代码路径和.class文件路径,
         dump后生成的.exec文件,生成最终的html覆盖率报告。-->
    <target name="report">
        <jacoco:report>
            <executiondata>
                <file file="${jacocoExecPath}/merged.exec"/>
            </executiondata>
 
            <structure name="JaCoCo Report">
			<!--group name 对应生成的报告中的列表名-->
                <group name="yunpan api">
                    <sourcefiles encoding="UTF-8">
                        <fileset dir="${yunpan_apiSrcPath}"/>
                    </sourcefiles>
                    <classfiles>
                        <fileset dir="${yunpan_ClassesPath}"/>
                    </classfiles>
                </group>
                <group name="yunpan provider">
                    <sourcefiles encoding="UTF-8">
                        <fileset dir="${yunpan_providerSrcPath}"/>
                    </sourcefiles>
                    <classfiles>
                        <fileset dir="${yunpan_ClassesPath}"/>
                    </classfiles>
                </group>
                <group name="yunpan web">
                    <sourcefiles encoding="UTF-8">
                        <fileset dir="${yunpan_webSrcPath}"/>
                    </sourcefiles>
                    <classfiles>
                        <fileset dir="${yunpan_ClassesPath}"/>
                    </classfiles>
                </group>
 
            </structure>
 
            <html destdir="${jacocoReportPath}" encoding="utf-8"/>
            <csv destfile="${jacocoReportPath}/report.csv"/>
            <xml destfile="${jacocoReportPath}/report.xml"/>
        </jacoco:report>
    </target>
</project>

5、需要拉取覆盖率的时候,执行对于的ant任务就可以

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值