Вы можете использовать условия, используя задачу <fail>
:
<fail message="Property "foo" needs to be set to a value">
<condition>
<or>
<equals arg1="${foo}" arg2=""/>
<not>
<isset property="foo"/>
</not>
</or>
</condition>
Это эквивалентно тому, что if (not set ${foo} or ${foo} = "")
- псевдокод.Вы должны прочитать условия XML изнутри.
Вы могли бы использовать предложение <unless>
в задаче <fail>
, если бы вам было интересно, установлена ли переменная или нет, а не имеет ли онафактическое значение.
<fail message="Property "foo" needs to be set"
unless="foo"/>
Однако, если свойство установлено, оно не завершится ошибкой.
Есть хитрость, которая может сделать это проще
<!-- Won't change the value of `${foo}` if it's already defined -->
<property name="foo" value=""/>
<fail message="Property "foo" has no value">
<condition>
<equals arg1="${foo}" arg2=""/>
</condition>
</fail>
Помните, что я не могу сбросить свойство!Если ${foo}
уже имеет значение, задача <property>
, указанная выше, ничего не сделает.Таким образом, я могу устранить условие <isset>
.Это может быть хорошо, так как у вас есть три свойства:
<property name="foo" value=""/>
<property name="bar" value=""/>
<property name="fubar" value=""/>
<fail message="You broke the build, you dufus">
<condition>
<or>
<equals arg1="${foo}" arg2=""/>
<equals arg1="${bar}" arg2=""/>
<equals arg1="${fubar}" arg2=""/>
</or>
</condition>
</fail>