Продолжить выполнение ant-скрипта при сбое одной задачи

#ant

#ant

Вопрос:

У меня есть Ant-скрипт, который запускает тесты, а затем развертывает мое приложение на сервере контроля качества. Для развертывания приложения, которое оно вызывает первым sun-appserv undeploy , по разным причинам приложение может быть развернуто, а может и не быть развернуто. Если приложение не развернуто, то развертывание завершается неудачно, и весь скрипт останавливается.

Есть ли какой-то способ, которым я могу допустить сбой в одной задаче, зарегистрировать его и позволить остальной части сценария выполняться?

Ответ №1:

AntContrib try catch:

 <trycatch>
<try>
   <!-- do deployment getting return code -->
</try>
<catch>
   <!-- echo the return code with a message -->
</catch>
</trycatch>
  

Задача exec имеет атрибут failonerror, для которого вы можете установить значение false, чтобы продолжить выполнение.

Комментарии:

1. Похоже, что пара ant-contrib try / catch должна быть заключена в тег <trycatch> .

2. Я согласен и изменил свой ответ.

Ответ №2:

Я искал что-то похожее на это и нашел альтернативный метод, который полезен, если вы хотите запустить много задач, которые не зависят друг от друга, и вы хотите знать, завершились ли все 5 из них без необходимости исправлять первую.

Заключите все задачи в параллельную задачу с числом потоков, равным 1. Это определенно неправильное использование параллельной задачи, но оно достигает моей цели:

 <parallel threadCount="1">
    <fail message="fail 1"/>
    <fail message="fail 2"/>
    <echo message="Success"/>
    <fail message="fail 3"/>
</parallel>
  

Запуск этого в целевом объекте дает это для вывода:

 test:
     [echo] Success

BUILD FAILED
C:testbuild.xml:5:
fail 1
fail 2
fail 3

Total time: 0 seconds
  

Ответ №3:

Смотрите -keep-going Параметр, описанный здесь