Как завершить работу ant-скрипта, если не удалось выполнить задачу exec - PullRequest
6 голосов
/ 31 октября 2011

Я выполняю сценарий муравья в Windows. Учитывая это, я выполняю команду dir в задаче exec, как показано ниже

<target name="dummy">
  <exec executable="cmd" failonerror="true">
    <arg line="/C DIRR"/>
  </exec>
  <exec executable="cmd" failonerror="true">
    <arg line="/C cd /d c:\temp"/>
  </exec>
</target>

Здесь я дал DIRR вместо DIR, это выполнение не удастся. но сборка муравьев не подводит. Оно показывает сообщение об ошибке как dirr is not recognised as internal or external command, и следующая команда cd /d c:\temp также выполняется. Я хочу, чтобы выполнение скрипта ant было остановлено после появления сообщения об ошибке.

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

Примечание: я использую муравей 1.8.2

1 Ответ

2 голосов
/ 31 октября 2011

Обратите внимание, что здесь есть два уровня исполнения:

  • Муравьиные звонки cmd.exe.
  • cmd.exe выполняет DIRSS.

Видите ли, если второй шаг не пройден, это не обязательно означает, что cmd.exe действительно передает ошибку обратно в Ant. Это может быть более очевидным, если мысленно заменить известный cmd.exe чем-то «невинным», таким как foo.exe.

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

Первый шаг может быть следующим: откройте новое окно оболочки и попробуйте

> cmd /c dir
> echo %ERRORLEVEL%

> cmd /c dir nonexisting-directory
> echo %ERRORLEVEL%

> cmd /c dirr
> echo %ERRORLEVEL%

Также сообщите нам версию вашей ОС.

...