można wykorzystywać warunki pomocą zadania <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>
Jest to równoznaczne ze stwierdzeniem, if (not set ${foo} or ${foo} = "")
jest pseudokod. Musisz odczytać warunki XML od środka.
Mogłeś użyć klauzuli <unless>
w zadaniu <fail>
, jeśli zależało ci tylko na tym, czy zmienna została ustawiona, a nie czy ma ona wartość rzeczywistą.
<fail message="Property "foo" needs to be set"
unless="foo"/>
Jednak nie zawiedzie, jeśli właściwość jest ustawiona, ale nie ma wartości.
Jest trik, który może uczynić to prostsze
<!-- 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>
Pamiętaj, że nie mogę zresetować własność! Jeśli ${foo}
ma już wartość, powyższe zadanie nie wykona niczego. W ten sposób mogę wyeliminować warunek <isset>
.To może być miłe, ponieważ masz trzy właściwości:
<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>
możliwe duplikat [ant filtrowania - zawodzić, jeśli nieruchomość nie Set] (http://stackoverflow.com/questions/226683/ant-filtering-fail-if-property-not-set) – oers