可参考文档:jacoco统计自动化代码覆盖率

1.结合AnT

build.xml配置如下,主要包括Jacoco的安装路径,最终生成.exec文件的路径,生成覆盖率报告report的路径,远程监听服务ip和端口以及源代码路径和.class文件路径;

build.xml配置如下:

2.监听注入:

2.1上传jacocoagent.jar到被监听服务的服务器;

2.2编辑被监听服务(tomcat服务)的start.sh文件,给JAVA_OPTS参数添加如下内容:

-javaagent:/export/App/Jco/jacocoagent.jar=includes=com.jd.*,output=tcpserver,port=4374,address=192.168.156.92

参数说明如下: 
1) -javaagent: 的后面跟jacoco的安装路径 
2) includes= 选项,选择你要覆盖率的服务,也就是包名 
3) port=,选择你要打开的端口,jacoco的端口,与所对应的tomcat端口不能一样,与其他端口也不能冲突 
4) address= tomcat服务所在机器的ip地址(如果想在跟tomcat服务同一台机器上执行ant任务的话,需要改为127.0.0.1) 
5) -Xverify:none,避免启动报错的情况 
这样配置后就将jacoco嵌入到了tomcat中,到时候tomcat起来后,就通过开放的端口,来访问jacoco检测到的数据。正常启动tomcat,jacoco就在实时监测tomcat中运行的war包,此时数据全部存放在内存中。
 3.生成报告

执行命令:

3.1 ant dump;-----获取远程监听服务生成的jacoco.exec

3.2 ant report;-----根据生成的jacoco.exec文件生成report文件

4 报告解析

报告数据包括:函数覆盖,语句覆盖()


build.xml配合如下:
<?xml version="1.0" ?>
 <project name="test" xmlns:jacoco="antlib:org.jacoco.ant" >
     <!--Jacoco的安装路径-->
   <property name="jacocoantPath" value="D:\program\ANT\jacoco-0.8.3\lib\jacocoant.jar"/>
   <!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的-->
   <property name="jacocoexecPath" value="D:\program\ANT\jacoco-0.8.3\target\jacoco.exec"/>
     <!--生成覆盖率报告的路径-->
   <property name="reportfolderPath" value="D:\program\ANT\jacoco-0.8.3\report\"/>
   <!--远程tomcat服务的ip地址-->
   <property name="server_ip" value="192.168.156.01"/>
   <!--前面配置的远程tomcat服务打开的端口,要跟上面配置的一样-->
   <property name="server_port" value="4374"/>
   <!--源代码路径可以包含多个源代码 (在服务部署所在的服务器上)  -->  
   <property name="webSrcpath" value="D:\源代码路径\src\main\java" />   <!--.class文件路径可以包含多个(在服务部署所在的服务器上)-->
   <property name="webClasspath" value="D:\编译后的代码路径\target\classes"/>   <!--让ant知道去哪儿找Jacoco-->
   <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
       <classpath path="${jacocoantPath}" />
   </taskdef>  <!--dump任务:
       根据前面配置的ip地址,和端口号,
       访问目标tomcat服务,并生成.exec文件。-->  <target name="dump">
       <jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}" port="${server_port}" append="true"/>
   </target>  <!--jacoco任务:
       根据前面配置的源代码路径和.class文件路径,
       根据dump后,生成的.exec文件,生成最终的html覆盖率报告。-->  <target name="report">
       <delete dir="${reportfolderPath}" />
       <mkdir dir="${reportfolderPath}" />      <jacoco:report>
           <executiondata>
               <file file="${jacocoexecPath}" />
           </executiondata>          <structure name="JaCoCo Report">
               <group name="Launch related">   
              <!--此处配置classes文件地址 -->        
                   <classfiles>
                       <fileset dir="${webClasspath}" />
                   </classfiles>
                   <!--此处配置源码地址 -->
                     <sourcefiles encoding="gbk">
                       <fileset dir="${webSrcpath}" />
                   </sourcefiles>
               </group>          </structure>
          <html destdir="${reportfolderPath}" encoding="utf-8" />         
       </jacoco:report>
   </target>
 </project>