學習記錄(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM