我正在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
答案 0 :(得分:2)
请注意,此处有两个级别的执行:
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%
另请告诉我们您的操作系统版本。