还是相同的报错吗,因为 这个错误是说在 xslt
标签中没有正确指定样式表文件
同个服务器直接运行是正常的是吧
是的 正常的
那我感觉就是环境变量的差异了,可能你在jenkins上有些变量跟服务器的对不上的
在xml把变量都打印看看
<echo message="The value of my.variable is ${my.variable}" />
把报错那里的代码加一下吧,然后用jenkins构建
copy那边让它能强行覆盖
那要不copy语句放到外面去执行
把你现在ant的脚本再发一次
<?xml version="1.0" encoding="UTF-8"?>
<target name="run">
<antcall target="test" />
<antcall target="report" />
<echo message="The value of my.report is ${run} " />
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="/opt/JMeter/apache-jmeter-5.5/script" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="report">
<tstamp><format property="report.datestamp" pattern="yyyy-MM-dd HH:mm"/></tstamp>
<echo message="The value of my.jmeter.result.jtlName is ${jmeter.result.jtlName}"/>
<echo message="The value of my.jmeter.result.htmlName is ${jmeter.result.htmlName}"/>
<echo message="The value of my.jmeter.home is ${jmeter.home}"/>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-report_21.xsl">
<!--style="${jmeter.home}/extras/jmeter-results-report_21.xsl">-->
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
</target>
确认一下是不是jenkins执行的权限不够,在服务器上切到jenkins执行的对应账号执行ant脚本
确保文件没有被其他进程占用,通过lsof命令
怎么切
su - 用户
好像是可以了
ok