Jenkins不执行通过ant调用的批处理脚本

时间:2013-04-12 13:33:21

标签: ant jenkins

通过jenkins,使用默认目标调用ant文件build.xml。 ant任务调用批处理文件,该文件启动一个新窗口,并在执行后执行我的ant单元测试。

<exec dir="${baseLoc}/Temp/${ant.project.name}/@{testdata}" executable="cmd" vmlauncher="false">
            <env key="WAHL" value="@{option}"/>
            <arg line="/c "/>
        <arg value="start /wait __Make.bat"/> 

</exec>

问题是jenkins无法启动批处理脚本。有什么理由吗? 注意:通过ANT执行相同的操作。

2 个答案:

答案 0 :(得分:0)

我记得我自己在几年前运行批处理文件时遇到类似的问题,正确获取返回代码,等等。这是我在蚂蚁(和Jenkins / Hudson经营的蚂蚁)中成功使用了5年的执行官:

<property name="my.batch.file" value="${path.to.my.file}/myBatch.bat"/>

<exec dir="${dir.property.you.want}" executable="cmd" failonerror="true">
  <!-- any env lines can go here -->
  <arg line="/c call ${my.batch.file}"/> <!-- must be the first arg tag -->
  <arg line="arg1"/> <!-- batch file arguments start here if needed--> 
  <arg line="arg2"/>
</exec>

我建议使用ant属性存储批处理文件的完整路径,和/或确保dir条目与批处理文件的位置匹配。这可能就是为什么它没有在Jenkins中运行,因为它的工作目录最终会变得不同。

在你的情况下,你提到它会弹出一个新窗口(因为你正在使用start),所以你可能需要稍微调整它以获得这种行为。

答案 1 :(得分:0)

出于某种原因,我在exec任务中包含了 vmlauncher =“false”标记。删除它解决了这个问题。

现在我能够看到执行中每个批处理脚本的新命令shell。

感谢您的提示和建议。