2008-09-25 17 views
6

Cuando uso la tarea, la propiedad solo se establece en TRUE si el recurso (por ejemplo, el archivo) está disponible. Si no, la propiedad no está definida.Hormiga y la tarea disponible: ¿y si algo no está disponible?

Cuando imprime el valor de la propiedad, da verdadero si el recurso estaba disponible, pero de lo contrario solo imprime el nombre de la propiedad.

¿Hay una manera de establecer la propiedad de algún valor si el recurso es no disponible? He tratado de establecer la propiedad de forma explícita antes de la verificación disponibles, pero luego hormiga se queja:

 
[available] DEPRECATED - used to override an existing property. 
[available] Build file should not reuse the same property name for different values. 

Respuesta

2

La razón de esto comportamiento son los atributos if/unless en los objetivos. El objetivo con dicho atributo se ejecutará si/a menos que se establezca una propiedad con el nombre. Si se establece en falso o se establece en verdadero, no hay diferencia. De modo que puede usar la tarea disponible para establecer (o no) una propiedad y en función de esto ejecutar (o no) una tarea. Establecer la propiedad antes de la tarea disponible no es una solución, ya que las propiedades de la hormiga son inmutables, no se pueden cambiar una vez establecidas.

Hay tres soluciones posibles, establecer una propiedad a un valor si desarmado antes:

  1. Se utiliza la tarea disponible en combinación con no.
  2. Crea una tarea que establece la propiedad, que se ejecutará solo si la propiedad no está configurada (a menos que-atributo de la tarea).
  3. Simplemente establezca la propiedad después de la llamada a disponible. Como la propiedad solo cambiará si no está configurada, hará lo que usted desee.
8
<available filepath="/path/to/foo" property="foosThere" value="true"/> 
<property name="foosThere" value="false"/> 

La asignación de foosThere sólo tendrá éxito si ya no se ha establecido en true de su verificación de disponibilidad.

Cuestiones relacionadas