cmc*_*nty 5 java ant batch-file
我有一个从 Ant exec 任务调用的批处理脚本来编译一些 CSharp 代码。批处理脚本的结构如下
msbuild.exe %ARGS%
echo %ERRORLEVEL%
Run Code Online (Sandbox Code Playgroud)
现在当任务在 Ant 中运行时,我得到以下结果:
[exec] Time Elapsed 00:00:09.48
[exec] 0
BUILD FAILED
C:\proj\build.xml:410: exec returned: 2
Run Code Online (Sandbox Code Playgroud)
%ERRORLEVEL% 怎么可能是 0,但是 Ant exec 得到的返回码是 2?如果命令不返回代码,是否设置了一些默认错误代码?Ant 文档显示:
error code 2 means 'no such program',
Run Code Online (Sandbox Code Playgroud)
但显然我的批处理文件正在正确执行。
用 Ant 代码更新
<target name="build.csharp" if="isWindowsPlatform">
<exec executable="cmd.exe" failOnError="true">
<arg value="/c"/>
<arg value="build.csharp.bat" />
</exec>
</target>
Run Code Online (Sandbox Code Playgroud)
ANT手册指出:
错误和返回代码
默认情况下 a 的返回码
<exec>被忽略;当您设置failonerror="true"时,任何返回代码信号失败(特定于操作系统)都会导致构建失败。或者,您可以设置resultproperty属性的名称并将其分配给结果代码(当然,排除不变性)。如果尝试启动程序失败并出现与操作系统相关的错误代码,则
<exec>停止构建,除非failifexecutionfails设置为false。您可以使用它来运行程序(如果存在),否则不执行任何操作。这些错误代码是什么意思?嗯,它们依赖于操作系统。在 Windows 机器上,你必须查看文档;错误代码 2 表示“没有这样的程序”,这通常意味着它不在路径上。每当您在任何 Ant 任务中看到此类错误时,通常都不是 Ant 错误,而是您计算机上的某些配置问题。
要获取程序的返回代码,您需要使用exec task的resultProperty属性。
| 归档时间: |
|
| 查看次数: |
7255 次 |
| 最近记录: |