фильтрация муравья - перестала работать если свойство не набор

Эта строка никогда не выполняется из-за вашего условного условия if / else if / else:

if(one == null && two != null){
  return two;
} else if(one != null && two == null){
  return one;
} else{
  return null;
}

На основании этого условного выражения возвращаются два, один или ноль, прежде чем можно будет выполнить строку 21. [112 ]

Вы захотите удалить else, чтобы метод продолжал выполняться.

30
задан James Cooper 22 October 2008 в 16:57
поделиться

4 ответа

Можно сделать это у муравья 1.7, с помощью комбинации LoadFile задача и match состояние.

<loadfile property="all-build-properties" srcFile="build.properties"/>
<condition property="missing-properties">
    <matches pattern="@[^@]*@" string="${all-build-properties}"/>
</condition>
<fail message="Some properties not set!" if="missing-properties"/>
19
ответ дан 27 November 2019 в 22:59
поделиться

При поиске определенного свойства можно просто использовать задачу сбоя с если атрибут, например:

<fail unless="my.property">Computer says no. You forgot to set 'my.property'!</fail>

Относятся к документация для задачи сбоя Муравья для большего количества детали.

98
ответ дан 27 November 2019 в 22:59
поделиться

Я собирался предложить, чтобы Вы попытались использовать <property file="${filter.file}" prefix="filter"> для фактической загрузки свойств в Муравья, и затем fail, если какой-либо из них не установлен, но я думаю, что интерпретировал проблему неправильно (что Вы хотели перестать работать, если указанное свойство не было установлено в файле свойств).

я думаю, что Ваш лучший выбор мог бы состоять в том, чтобы использовать <exec> для (в зависимости от Вашей dev платформы), делают grep для символ и затем устанавливают свойство на количество найденных происшествий. Не уверенный в точном синтаксисе, но...

<exec command="grep \"@\" ${build.dir} | wc -l" outputproperty="token.count"/>
<condition property="token.found">
    <not>
        <equals arg1="${token.count}" arg2="0"/>
    </not>
</condition>
<fail if="token.found" message="Found token @ in files"/>
4
ответ дан 27 November 2019 в 22:59
поделиться

если исполнительная команда удерживается от использования в Вашей версии муравья, можно использовать редиректоры, что-то как:

<exec executable="grep">
  <arg line="@ ${build.dir}"/>
  <redirector outputproperty="grep.out"/>
</exec>
<exec executable="wc" inputstring="${grep.out}">
  <arg line="-l"/>
  <redirector outputproperty="token.found"/>
</exec>

создать token.found свойство

<condition property="token.found">
    <not>
        <equals arg1="${token.count}" arg2="0"/>
    </not>
</condition>
<fail if="token.found" message="Found token @ in files"/>

для условного выражения

0
ответ дан 27 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: