Как вернуть определенный код выхода из NANT? - PullRequest
3 голосов
/ 17 августа 2011

У меня есть скрипт nant, и я вижу, что даже если мой exec завершится неудачно, код выхода NANT в любом случае равен 0. Как изменить код выхода NANT?

Ответы [ 2 ]

1 голос
/ 14 октября 2012

Возврат определенного кода выхода из NANT

Если сборка завершится успешно, NANT завершит работу с кодом 0, если при сборке произойдет сбой NANT с кодом 1, и вы можете использовать <fail> для принудительной установки.NANT не дает другого способа управления кодом выхода, однако вы можете взломать его:

<script language="C#">
    <code>
        <![CDATA[
        public static void ScriptMain(Project project) 
        { 
            System.Environment.Exit(3);
        }
        ]]>
    </code>
</script>

Это немедленно прекратит работу nant, так что, возможно, вы захотите создать цель для запуска в самом конце, поместив ееinto nant.onsuccess .

Почему код выхода NANT равен 0 при <exec> Failed?

<exec> завершается неудачно, когда команда завершается с чем-либо, кроме 0. Обычно этоЭто приводит к сбою всей сборки и к завершению NANT с кодом 1, с двумя исключениями (см. 2 и 3).Это дает нам три возможных объяснения:

  1. Ваша команда не выполняется, но в любом случае завершается с 0 (это довольно распространенное поведение).Установите атрибут resultproperty и проверьте свойство. Атрибут
  2. failonerror="False" был установлен на <exec> или на более высокий уровень (<nant> или <call>).Проверьте выходные данные NANT, чтобы увидеть, в каком порядке вызываются цели, или выполните поиск failonerror=.
  3. . <exec> выполняется как часть цели, запущенной через nant.onsuccess соответственно. nant.onfailure свойство hook.Проверьте, если и где, ищите nant.on.

Сказать что-нибудь еще, например, сценарий NANT или, возможно, файл журнала.

1 голос
/ 17 августа 2011

У exec task есть атрибут с именем "resultproperty", который используется для получения кода выхода.

...