Puede utilizar condiciones mediante la tarea <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>
Esto es equivalente a decir if (not set ${foo} or ${foo} = "")
es pseudocódigo. Debes leer las condiciones XML desde adentro hacia afuera.
Podría haber usado la cláusula <unless>
en la tarea <fail>
si solo le importaba si la variable estaba configurada o no, y no si tenía un valor real.
<fail message="Property "foo" needs to be set"
unless="foo"/>
Sin embargo, esto no fallará si la propiedad está configurada, pero no tiene ningún valor.
Hay un truco que puede hacerlo mas simple
<!-- 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>
Recuerde que no puedo restablecer una propiedad! Si ${foo}
ya tiene un valor, la tarea anterior <property>
no hará nada. De esta forma, puedo eliminar la condición <isset>
.Puede ser que sea muy bueno, ya que tiene tres propiedades:
<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>
posible duplicado de [filtrado hormiga - fallar si la propiedad no especificado] (http://stackoverflow.com/questions/226683/ant-filtering-fail-if-property-not-set) – oers