Условный сбой Ant при сбое исполняемого файла - PullRequest
7 голосов
/ 18 октября 2011

У меня есть следующая цель муравья:

<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 ]

13 голосов
/ 18 октября 2011

просто добавьте failonerror="true" к элементу exec

8 голосов
/ 18 октября 2011

Я предполагаю, что это скрипт ant, а не цель xsl.

Вы можете использовать атрибут failifexecutionfails задачи exec:

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

Так что, если по какой-либо причине ваше выполнение завершится неудачно, ваша сборка также будет неудачной. По умолчанию это правда. Вы также можете проверить код возврата вашего исполняемого файла, используя атрибуты:

failonerror

и

resultproperty

например.

<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>
1 голос
/ 24 февраля 2017

Для немедленного сбоя используйте атрибут failonerror:

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

Чтобы выполнить какое-либо другое действие до сбоя, сохраните код завершения в атрибуте resultproperty.Как правило, 0 указывает на успех, а 1 или выше указывает на ошибку :

<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>
...