如果exec任务失败,如何使ant脚本失败

时间:2011-10-31 06:40:55

标签: ant scripting exit

我正在Windows中执行ant脚本。考虑到这一点,我正在dir任务中执行exec命令,如下所示

<target name="dummy">
  <exec executable="cmd" failonerror="true">
    <arg line="/C DIRR"/>
  </exec>
  <exec executable="cmd" failonerror="true">
    <arg line="/C cd /d c:\temp"/>
  </exec>
</target>

这里我给了DIRR而不是DIR,这次执行会失败。但是蚂蚁构建并没有失败。它将错误消息显示为dirr is not recognised as internal or external command,下一个命令cd /d c:\temp也已执行。我希望一旦出现错误消息就必须停止执行ant脚本。

我希望这个脚本必须在任何一个exec命令中发生错误时停止执行。 failonerror也没有帮助。如果exec失败,如何使ant构建失败。

注意:我使用的是ant 1.8.2

1 个答案:

答案 0 :(得分:2)

请注意,此处有两个级别的执行:

  • Ant调用cmd.exe
  • cmd.exe执行DIRSS

你看,如果第二步失败,这并不一定意味着,cmd.exe确实将错误传播回Ant。如果在心理上将知名的cmd.exe替换为像foo.exe这样“无辜”的东西,这可能会更加明显。

因此,下一步是探索,为什么第二步在您的机器上的行为与在您的问题的评论员的机器上的行为不同。在解决了这个谜题之后,你可以回到Ant问题。

第一步可能是:打开一个新的shell窗口并尝试

> cmd /c dir
> echo %ERRORLEVEL%

> cmd /c dir nonexisting-directory
> echo %ERRORLEVEL%

> cmd /c dirr
> echo %ERRORLEVEL%

另请告诉我们您的操作系统版本。