1

通过 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>

问题是詹金斯无法启动批处理脚本。这有什么原因吗?注意:相同的东西通过 ANT 执行。

4

2 回答 2

0

我记得几年前我自己在运行 ant 批处理文件、正确获取返回码等方面遇到了类似的问题。这是我在 ant(以及由 Jenkins/Hudson 运行的 ant)中成功使用了 5 年的 exec:

<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),因此您可能需要对其进行一些调整才能获得该行为。

于 2013-04-12T18:21:19.257 回答
0

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

现在,我可以看到正在执行的每个批处理脚本的新命令 shell。

感谢您的提示和建议。

于 2013-04-15T12:01:39.733 回答