求助,我在远程到Jenkins的机器后,以root用户运行ant dump是没问题的,可是Jenkins运行ant dump就报错。
下面是我的build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="vmuser" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">
<!--Jacoco的安装路径-->
<property name="jacocoantPath" value="/root/tools/jacoco-0.8.5/lib/jacocoant.jar"/>
<!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的-->
<property name="jacocoexecPath" value="/var/lib/jenkins/workspace/vmUserCodeCoverage/result/jacoco.exec"/>
<!--生成覆盖率报告的路径,直接放在tomct下面,外界直接访问-->
<property name="reportfolderPath" value="/var/lib/jenkins/workspace/vmUserCodeCoverage/report"/>
<!--远程tomcat服务的ip地址-->
<property name="server_ip" value="127.0.0.0"/>
<!--前面配置的远程tomcat服务打开的端口,要跟上面配置的一样-->
<!--这个端口有别于tomcat的端口,相当于是嵌在tomcat里的监视器-->
<property name="server_port" value="8229"/>
<!--源代码路径-->
<!--<property name="checkOrderSrcpath" value="/root/LoginDemo4/src/main/java/" />-->
<!--可以配置多个源代码-->
<property name="checkOrderSrcPath" value="/var/lib/jenkins/workspace/vmUserCodeCoverage/app/src/main/java/"/>
<property name="checkOrderSrcPath2" value="/var/lib/jenkins/workspace/vmUserCodeCoverage/service/src/main/java/"/>
<!--.class文件路径-->
<!--跑的是class,标注的是源码?-->
<!--<property name="checkOrderClasspath" value="/root/wftest/target/classes/com/hundsun" />-->
<property name="checkOrderClasspath" value="/var/lib/jenkins/workspace/vmUserCodeCoverage/home/ec2-user/test/jacoco/jacoco_class/com/dingtone/videomaster/user/service/impl"/>
<property name="checkOrderClasspath2" value="/var/lib/jenkins/workspace/vmUserCodeCoverage/home/ec2-user/test/jacoco/jacoco_class/com/dingtone/videomaster/user/app/controller"/>
<!--让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="Check Order related">
<classfiles>
<fileset dir="${checkOrderClasspath}"/>
<fileset dir="${checkOrderClasspath2}"/>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${checkOrderSrcPath}" />
<fileset dir="${checkOrderSrcPath2}" />
</sourcefiles>
</group>
</structure>
<html destdir="${reportfolderPath}" encoding="UTF-8" />
<csv destfile="${reportfolderPath}/coverage-report.csv" encoding="UTF-8"/>
<xml destfile="${reportfolderPath}/coverage-report.xml" encoding="UTF-8"/>
</jacoco:report>
</target>
</project>
报错:
- ant dump Buildfile: /var/lib/jenkins/workspace/vmUserCodeCoverage/build.xml [taskdef] Could not load definitions from resource org/jacoco/ant/antlib.xml. It could not be found.
dump:
BUILD FAILED
/var/lib/jenkins/workspace/vmUserCodeCoverage/build.xml:46: Problem: failed to create task or type antlib:org.jacoco.ant:dump
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any / declarations have taken place.
No types or tasks have been defined in this namespace yet
This appears to be an antlib declaration.
Action: Check that the implementing library exists in one of:
-/usr/local/apache-ant-1.10.7/lib
-/var/lib/jenkins/.ant/lib
-a directory added on the command line with the -lib argument
Total time: 0 seconds
Build step 'Execute shell' marked build as failure
Finished: FAILURE
我检查了所有依赖的文件夹权限,全都改成了777 ,Jenkins的运行身份也提升到了root,都不行。