Pregunta

Cuando uso la tarea, la propiedad solo se establece en VERDADERO si el recurso (por ejemplo, el archivo) está disponible. Si no, la propiedad no está definida.

Cuando imprimo 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 en algún valor si el recurso está no disponible? He intentado establecer la propiedad explícitamente antes de la verificación disponible, pero luego la hormiga se queja:

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

Solución

Puedes usar una condición en combinación con no:

http://ant.apache.org/manual/Tasks/condition.html

  <condition property="fooDoesNotExist">
    <not>
      <available filepath="path/to/foo"/>
    </not>
  </condition>

Otros consejos

<available filepath="/path/to/foo" property="foosThere" value="true"/>
<property name="foosThere" value="false"/>

La asignación de foosThere solo tendrá éxito si su verificación de disponibilidad aún no la ha configurado como verdadera.

El motivo de este comportamiento son los atributos if / menos en los objetivos. El destino 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. Por lo tanto, 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 en ant son inmutables, no se pueden cambiar una vez que se hayan establecido.

Hay tres soluciones posibles para establecer una propiedad en un valor si no se ha establecido antes:

  1. Usas la tarea disponible en Combinación con el no.
  2. Crea una tarea que configura la propiedad, que se ejecutará solo si la propiedad no está establecida (a menos que sea un atributo de la tarea).
  3. Simplemente configura la propiedad después de la llamada como disponible. Como la propiedad solo cambiará si no está configurada, esto hará lo que desee.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top