在Ant中,如何从exec获取返回值?
在此任务中,可执行文件将返回一个值,该值将指示我的应用程序的状态。如何获取Ant构建文件中返回的值。我将使用此值来确定某些行为。使用任务的在Ant中,如何从exec获取返回值?,ant,Ant,在此任务中,可执行文件将返回一个值,该值将指示我的应用程序的状态。如何获取Ant构建文件中返回的值。我将使用此值来确定某些行为。使用任务的resultproperty和failonerror属性,例如: <target name="CheckState"> <exec executable="${App.path}"/> </target> 从exec任务文档错误和返回代码中引用: 默认情况下,exec的返回代码 被忽视;当你设定 failon
resultproperty
和failonerror
属性,例如:
<target name="CheckState">
<exec executable="${App.path}"/>
</target>
从exec
任务文档错误和返回代码中引用:
默认情况下,exec的返回代码
被忽视;当你设定
failonerror=“true”然后返回
代码信令故障(特定于操作系统)
导致生成失败。
或者,您可以设置
resultproperty指向的名称
属性,并将其指定给
结果代码(除非具有不变性,否则为
当然)
如果您试图启动程序
失败,错误代码与操作系统相关,
然后停止构建,除非
failifexecutionfails设置为false。
如果需要,您可以使用它来运行程序
它存在,但在其他方面什么也不做
这些错误代码是什么意思?好,
它们依赖于操作系统。在窗户上
盒子你得看看盒子
文档错误代码2表示“否”
“这样的程序”,这通常意味着
不在路上。你看到什么时候
任何Ant任务都会出现这样的错误,它是
通常不是蚂蚁虫,而是一些
计算机上的配置问题
这里是一种通用方法,用于检查结果并仅在流程返回故障代码时显示执行的输出
<target name="CheckState">
<exec executable="${App.path}"
resultproperty="App.state"
failonerror="false"/>
<echo message="App state was: ${App.state}" />
</target>
谢谢。这管用!我尝试了outputproperty和errorproperty,但没有看到resultproperty。您是否将fork属性设置为true?根据O'Reilly的Ant:权威指南,resultproperty只有在FailOneError为false,fork为true时才有效。然而,fork似乎是Java元素的一个属性。@Jamil我不太明白。fork在exec中是隐式的,不需要指定它。@martinclayton啊,我不知道。谢谢。我假设我们不能用相同的输出属性运行两个连续的exec,对吗?这种不变性快把我逼疯了。。。我甚至试过ant contrib,但它也不起作用。有什么想法吗?
<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>