#ant #scripting #exit
#ant #сценарии #выход
Вопрос:
Я выполняю ant-скрипт в 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
, это выполнение завершится неудачей. но сборка ant не завершается сбоем. Отображается сообщение об ошибке as dirr is not recognised as internal or external command
, и следующая команда cd /d c:temp
также была выполнена. Я хочу, чтобы выполнение ant-скрипта было остановлено после появления сообщения об ошибке.
Я хочу, чтобы этот скрипт прекратил выполнение, если в какой-либо из команд exec произошла ошибка. failonerror
также не помогает. Как выполнить сбой сборки ant, если exec завершается с ошибкой.
Примечание: я использую ant 1.8.2
Комментарии:
1.
build: [exec] 'DIRR' is not recognized as an internal or external command, [exec] operable program or batch file. BUILD FAILED
Отлично работает на моем компьютере. Я не уверен, что вы получаете.2. Можете ли вы предоставить весь файл сборки целиком? Я запускаю ваш пример, и он отлично работает на моем компьютере. ant 1.8.2
3. @FailedDev изменил мой вопрос.
4. Он по-прежнему работает так, как ожидалось, то есть завершается сбоем при первой ошибке, и скрипт останавливается именно там.
5. @rajaashok Пример работает и для меня, как вы хотите — он останавливается после первого вызова. Версия Ant: 1.8.2. Вы можете исправить опечатку в своем сообщении: <имя цели =»фиктивный»>.
Ответ №1:
Пожалуйста, обратите внимание, что здесь есть два уровня исполнения:
- Муравей зовет
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%
Также сообщите нам версию вашей операционной системы.
Комментарии:
1. Я никогда не видел, чтобы что-то терпело неудачу, как это. Я имею в виду, что он должен завершиться с ошибкой на всех или ни на одном компьютере с Windows, если не выполняется какое-либо волшебство.
2. @FailedDev: В конце концов, «волшебная часть» оказывается
dirr.exe
где-то на пути 🙂 Я бы ROTFL.3. 1, если это является причиной. 🙂 Я буду внимательно следить за этим вопросом. Я использую ant, как орехи, но еще не видел такой ошибки!