将退出代码从 ant 返回到批处理文件

问题描述 投票:0回答:2

我的 .bat 文件中有几个 ant 任务要执行。
我的.bat文件如下:

调用 ant -buildfile task.xml target1
调用 ant -buildfile task.xml target2

对于每个 ant 任务,它将执行一个 java 程序,该程序将使用 System.exit() 返回退出代码。

我知道退出代码可以通过在ant配置中使用resultproperty来接收。
如何通过调用 ant 任务获取 .bat 文件中的退出代码?

java ant batch-file exit-code
2个回答
6
投票

你可以尝试这样的事情:

1) 在你的 ant task.xml 中:如果 resultproperty 不为 0,则使其失败。为此,你可以使用 fail task

  • resultProperty不为0的条件
  • 状态码等于从你的java程序返回的状态码

这是示例代码:

<exec executable="cmd" resultproperty="javaReturnCode" ...>
    ...
</exec>

<fail message="java program execution failure" status="${javaReturnCode}">
   <condition>
      <not>
        <equals arg1="${javaReturnCode}" arg2="0"/>
      </not>
   </condition>
</fail>

2)在批处理文件中:%errorlevel%包含最后一个命令的返回代码,因此类似这样的东西可以工作:

call ant -buildfile task.xml target1
IF NOT ERRORLEVEL 0 GOTO javaProgramErrorHandlingTarget1
call ant -buildfile task.xml target2
IF NOT ERRORLEVEL 0 GOTO javaProgramErrorHandlingTarget2
REM both ant targets exit normally so continue normal job
...
:javaProgramErrorHandlingTarget1
...
:javaProgramErrorHandlingTarget2
...

0
投票

您可以使用

java
exec 任务的 failonerror 属性。例如:

<java
    classpath="..."
    classname="..."
    failonerror="true"
>
    ...
</java>

这将导致 ant 终止,退出值与从 Java 应用程序传递给 System.exit() 的值相同。

然后可以使用

ERRORLEVEL
在批处理脚本中处理该值。例如:

call ant -buildfile task.xml target1
IF NOT ERRORLEVEL 0 GOTO ...
call ant -buildfile task.xml target2
IF NOT ERRORLEVEL 0 GOTO ...
© www.soinside.com 2019 - 2024. All rights reserved.