<target name="CheckState">
<exec executable="${App.path}"/>
</target>
在此任务中,可执行文件将返回一个值,该值将指示我的应用程序的状态。我怎样才能获得Ant构建文件中返回的值。我将使用此值来确定某些行为。
答案 0 :(得分:32)
使用exec
任务的resultproperty
和failonerror
属性,例如:
<target name="CheckState">
<exec executable="${App.path}"
resultproperty="App.state"
failonerror="false"/>
<echo message="App state was: ${App.state}" />
</target>
引用exec
任务文档错误并返回代码:
默认情况下,exec的返回码 被忽略了;当你设置 failonerror =“true”然后任何回报 代码信令故障(OS特定) 导致构建失败。 或者,您可以设置 resultproperty为a的名称 财产并将其分配给 结果代码(禁止不变性) 疗程)。
如果尝试启动该程序 失败,出现与OS相关的错误代码, 然后停止构建,除非 failifexecutionfails设置为false。 您可以使用它来运行程序if 它存在,但否则什么都不做。
这些错误代码是什么意思?好, 他们依赖于操作系统。在Windows上 你要看的盒子 文件;错误代码2表示'不 这样的程序',通常意味着它 不在路上。任何时候你看到 任何Ant任务都有这样的错误 通常不是Ant bug,而是一些 您计算机上的配置问题。
答案 1 :(得分:6)
如果进程返回失败代码,这是检查结果并显示执行的输出的通用方法。
<property
name="my.project.tmp.exec.output"
value="${tmp.dir}/exec-output.txt"/>
<target
name="my.project.my.task">
<exec
executable="${App.path}"
output="${my.project.tmp.exec.output}"
resultproperty="my.project.my.task.result"
failonerror="false"/>
<loadfile
srcfile="${my.project.tmp.exec.output}"
property="my.project.my.task.output"
/>
<fail message="ERROR: ${my.project.my.task.output}">
<condition>
<not>
<equals arg1="${my.project.my.task.result}" arg2="0"/>
</not>
</condition>
</fail>
<delete file="${my.project.tmp.exec.output}"/>
</target>