• 学习记录(5):linux服务器上部署jacoco、ant遇到的一堆坑


    1、需要下载jacooc 和 ant的包,放在linux下。目录自定

    Ant:https://ant.apache.org/bindownload.cgi(历史版本:https://archive.apache.org/dist/ant/binaries/
    Jacoco:https://www.eclemma.org/jacoco/

    2、tomcat下或者有些自定义下的启动文件:*.sh

    JAVA_OPTS= "-javaagent:/data/new/lib/jacocoagent.jar=includes=*,output=tcpserver,port=10652,address=127.0.0.1,append=true"

    坑1:端口不能与现有服务器上存在的端口重复

    坑2:address 用 127.0.0.1不行的话,可以换成服务器的ip

    坑3:最最重要的,也是坑了一大堆人的就是。这个配置要放在最前面。尝试过N多次放在JAVA_OPTS其他配置后面N多次,服务起不来,日志查不到错误。各种抓狂。也不知道百度什么

    坑4:如果单个机器linux下有多个服务,共用一个启动脚本,那么端口号就不能写死了。不然就会出现,第一个服务能正常重启,其他服务就再也起不来了

    解决方法:配置成变量。或者能读取对应服务的端口号,再对应的端口上+定值。来生产jacoco需要的端口号

    3、配置ant

    ant下载解压后,在bin目录下建build.xml文件。配置看参考链接。配置好了后,

    执行命令:./ant -v

    坑1:build.xml文件找不到 .(build .xml 文件要在bin目录下)

    坑2:报告生成了。但是具体的方法点不进去。

    原因:配置这项的时候,需要代码的源文件。不是编译后的class文件。也不是war包jar包(<property name="resource.code" location="/data/temp/test/test-api/src/main/java/" />)

    同时这个目录层级要跟class配置的<property name="result.classes.dir" location="${result.dir}/classes" />。不然也是下面的这个结果。能看到覆盖率的值,但是没法点进去具体的方法哪些被覆盖率,哪些没被覆盖

     build.xml模板文件配置:方便多项目使用,预留几个黑体字段的值。作为可替换字段

    ?xml version="1.0" encoding="UTF-8" ?>
    <project name="Jacoco" xmlns:jacoco="antlib:org.jacoco.ant" default="report">
    <property name="result.dir.project" location="/data/jenkins_home/workspace/test-project/target/test-project/WEB-INF"/>

    <property name="result.classes.dir.project" location="${result.dir.project}/classes" />

    <property name="result.report.dir" location="/data/new/report/test-machine/test-project" />

    <property name="resource.code.project" location="/data/jenkins_home/workspace/test-project/src/main/java/" />

    <!–- jacocoantPath 配置jacocoant.jar 。需要从jacoco的包里面把这个jar包copy到jenkins服务器的指定目录下 -->

    <property name="jacocoantPath" value="/data/new/jacoco/lib/jacocoant.jar"/>                               
    <property name="integrationJacocoexecPath" value="/data/new/test/jacoco.exec"/>

    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
    <classpath path="${jacocoantPath}" />
    </taskdef>

    <target name="dump">
    <jacoco:dump address="test-ip" port="test-port" reset="false" destfile="${integrationJacocoexecPath}" append="false"/>
    </target>

    <target name="report" depends="dump">

    <!-- Create coverage report -->
    <jacoco:report>
    <!-- This task needs the collected execution data and ... -->
    <executiondata>
    <file file="${integrationJacocoexecPath}" />
    </executiondata>

    <!-- the class files and optional source files ... -->
    <structure name="API_CodeCoverage">
    <group name="test-project">
    <classfiles>
    <fileset dir="${result.classes.dir.project}"/>
    </classfiles>
    <sourcefiles encoding="UTF-8">
    <fileset dir="${resource.code.project}"/>
    </sourcefiles>
    </group>
    </structure>
    <!-- to produce reports in different formats. -->
    <html destdir="${result.report.dir}" />
    </jacoco:report>
    </target>

    参考:https://blog.csdn.net/czy3y/article/details/81741136?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4

  • 相关阅读:
    ArcEngine+C# TIN相关三维功能模块介绍(三)
    关于“实践”的一点认识
    浅析:C# 中构建多线程应用程序
    ArcEngine+C# TIN相关三维功能模块介绍(二)
    论文分享NO.1(by_xiaojian)
    【第2次会议记录_2018.5.27】—— [ 算法原理 ]:手工特征提取的概念问题。(by_wanghao)
    UK Day46 MongoDB 启动和连接MongoDB
    UK Day42 Mac修改Terminal主题
    UK Day45 什么是云计算
    性能优化小结
  • 原文地址:https://www.cnblogs.com/kanbudong/p/12838286.html
Copyright © 2020-2023  润新知