如何在Ant中从批处理文件获取%ERRORLEVEL%

4

我想知道在Ant构建xml中是否可以获取批处理文件的返回值。

我的批处理文件返回%ERRORLEVEL%值(在我的情况下,批处理文件返回2)。我想知道是否可以捕获此值并将其标记为Ant中的错误。以下是我使用的代码片段:

<exec executable = "cmd">
  <arg value="/c"/>     
   <arg value="C:\workspace\Build\cross_Compile.bat"/>
 </exec>

目前,在批处理文件调用之后,构建总是报告成功。看起来Ant没有处理%ERRORLEVEL%或者我不确定。我该如何让Ant处理%ERRORLEVEL%

1个回答

4

使用resultpropertyfailonerror。默认情况下,错误代码将被忽略。

<property name="Batcherrcode" value="0"/>
<exec executable = "cmd" failonerror="true" resultproperty="Batcherrcode">
  <arg value="/c"/>     
   <arg value="C:\workspace\Build\cross_Compile.bat"/>
 </exec>
<echo message="Error Code:=${Batcherrorcode}" />

谢谢您。我尝试过了,但即使批处理文件返回2(我在批处理文件中打印以查找错误级别),Batcherrcode事件的值仍为0。 - KK99
我认为如果你在批处理文件中打印,那么你得到的最后一个错误代码来自于打印操作,而这个打印操作是成功的。 - Jacob
如果您在打印命令后打印错误代码,则您的错误代码就是打印命令的错误代码。您是这样退出批处理的吗:@exit %ERRORLEVEL%?请发布批处理文件。 - Jacob
抱歉。这是我的批处理文件内容: echo %ERRORLEVEL% echo " done " if %errorlevel% neq 0 exit /b %errorlevel% - KK99
删除这段代码:echo %ERRORLEVEL% echo " done ",然后再进行测试。 - Jacob
很抱歉,看起来从命令提示符返回的变量没有发送到ANT。我总是得到值0。 - KK99

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接