Как мне сделать пользовательский статус выхода в моей Java-программе, написанной на jRuby? - PullRequest
4 голосов
/ 12 марта 2012

Я работаю над обобщенной базой утилиты валидации, которую я хочу распространять в виде JAR и автоматизировать с помощью Ant.Используя только Java, я могу сделать что-то вроде

...
int validationResults = this.validate();
System.exit(validationResults) // via Ant: 1 = "BUILD FAILED", 0 = "BUILD SUCCESSFUL"
...

, чтобы использовать утилиту проверки в запланированных сборках с использованием CI-систем.

Однако я пишу это в jRuby вместо Java (для обучения).Я пробовал описанные ниже способы, но они не вызывают "BUILD FAILED" в Ant.

java.lang.System.exit(1) # using "require 'java'" at the the top of the file
Kernel.exit 1
exit 1

Я видел билеты об этом в трекере вопросов jRuby (например, JRUBY-1650 ) но мне не удалось найти решение моей проблемы.

Я использую jRuby v1.6.6 и Warbler v1.3.2.Цель Ant выглядит следующим образом:

<target name="validate">
  <java jar="./validator.jar" fork="true" />
</target>

Это я не правильно делаю, или jRuby не поддерживает это (пока)?

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Полагаю, вы запускаете свой код jRuby из java Задачи Ant .

Чтобы получить сбой Ant в случае ненулевого кода выхода из вашего процесса jRuby, вы должны установить атрибут failonerror задачи java на true.

1 голос
/ 15 марта 2012

Вот ключ, который я использую, чтобы вызвать сбой сборки, когда в противном случае ant не может распознать код выхода.Требуется ant-contrib.

В ant:

<delete file="${java.io.tmpdir}/build-executable-error"/>
<exec executable= ... />

<if>
    <resourceexists>
        <file file="${java.io.tmpdir}/build-executable-error"/>
    </resourceexists>
    <then>
        <loadfile srcfile="${java.io.tmpdir}/build-executable-error"
                  property="build.failure.message"/>
        <fail message="${build.failure.message}"/>
    </then>
</if>

Исполняемый файл отвечает за создание и заполнение файла ${java.io.tmpdir}/build-executable-error при любом сценарии ошибки.

...