可执行失败时Ant条件失败

时间:2011-10-17 21:27:01

标签: ant exec

我有以下蚂蚁目标:

<target name="refactor-ids">
    <echo>Refactor IDs</echo>
    <exec executable="perl" dir="${basedir}">
        <arg value="script.pl" />
        <arg value="input.xml" />

    </exec> 
</target>

如果可执行文件因任何原因失败(script.pl不存在等),则构建将解析为成功。如何在此可执行文件成功后建立条件构建成功?

3 个答案:

答案 0 :(得分:13)

只需将failonerror="true"添加到exec元素

即可

答案 1 :(得分:8)

我觉得这是一个蚂蚁脚本而不是xsl目标。

您可以使用exec任务的属性failifexecutionfails:

http://ant.apache.org/manual/Tasks/exec.html

因此,如果您的执行因任何原因失败,您的构建也将失败。这默认为true。您还可以使用以下属性检查可执行文件的返回代码:

failonerror

resultproperty

e.g。

<target name="refactor-ids">
    <echo>Refactor IDs</echo>
    <exec executable="perl" dir="${basedir}" failonerror="false" resultproperty="return.code">
        <arg value="script.pl" />
        <arg value="input.xml" />

    </exec> 
    <fail>
     <condition>
       <equals arg1="-1" arg2="${return.code}"/>
     </condition>
   </fail>
</target>

答案 2 :(得分:1)

要立即失败,请使用failonerror属性:

<exec dir="${basedir}" executable="sh" failonerror="true">
    <arg line="-c 'myscript'" />
</exec>

要在失败前执行其他操作,请将退出代码存储在resultproperty属性中。通常,0表示成功,1 or higher indicates an error

<exec dir="${basedir}" executable="sh" failonerror="false" resultproperty="exitStatusCode">
    <arg line="-c 'myscript'" />
</exec>

<!-- Do some other stuff before failing -->

<fail>
    <condition>
        <not>
            <equals arg1="0" arg2="${exitStatusCode}"/>
        </not>
    </condition>
</fail>