<target name="CheckState">
<exec executable="${App.path}"/>
</target>
Run Code Online (Sandbox Code Playgroud)
在此任务中,可执行文件将返回一个值,该值将指示我的应用程序的状态.我怎样才能获得Ant构建文件中返回的值.我将使用此值来确定某些行为.
mar*_*ton 33
使用任务的resultproperty和failonerror属性exec,例如:
<target name="CheckState">
<exec executable="${App.path}"
resultproperty="App.state"
failonerror="false"/>
<echo message="App state was: ${App.state}" />
</target>
Run Code Online (Sandbox Code Playgroud)
从exec任务文档引用错误和返回代码:
默认情况下,exec的返回码被忽略; 当您设置failonerror ="true"时,任何返回代码信令失败(特定于操作系统)都会导致构建失败.或者,您可以将resultproperty设置为属性的名称,并将其分配给结果代码(当然,除了不变性).
如果启动程序的尝试因操作系统相关的错误代码而失败,则除非将failifexecutionfails设置为false,否则将暂停构建.您可以使用它来运行程序(如果存在),否则不执行任何操作.
这些错误代码是什么意思?嗯,他们依赖于操作系统.在Windows框中,您必须查看文档; 错误代码2表示"没有这样的程序",这通常意味着它不在路径上.每当您从任何Ant任务中看到这样的错误时,它通常不是Ant错误,而是您计算机上的某些配置问题.
这是检查结果的通用方法,仅在进程返回失败代码时显示执行的输出.
<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>
Run Code Online (Sandbox Code Playgroud)