2008-09-25 7 views
6

Lorsque j'utilise la tâche, la propriété n'est définie sur TRUE que si la ressource (disons fichier) est disponible. Sinon, la propriété n'est pas définie.Ant et la tâche disponible - et si quelque chose n'est pas disponible?

Lorsque j'imprime la valeur de la propriété, elle donne true si la ressource était disponible, mais imprime simplement le nom de la propriété.

Existe-t-il un moyen de définir la propriété à une certaine valeur si la ressource est et non disponible? J'ai essayé de définir la propriété explicitement avant le contrôle disponible, mais fourmi se plaint:

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

Répondre

2

La raison comportement sont les attributs if/unless dans les cibles. La cible avec un tel attribut sera exécutée si/à moins qu'une propriété avec le nom soit définie. Si elle est définie sur false ou définie sur true ne fait aucune différence. Vous pouvez donc utiliser la tâche disponible pour définir (ou non) une propriété et, sur cette base, exécuter (ou non) une tâche. Définir la propriété avant la tâche disponible n'est pas une solution, car les propriétés dans ant sont immuables, elles ne peuvent pas être changées une fois définies.

Il existe trois solutions possibles, pour définir une propriété à une valeur si unset avant:

  1. Vous utilisez la tâche disponible en combinaison avec pas.
  2. Vous créez une tâche définissant la propriété, qui sera exécutée uniquement si la propriété est désactivée (sauf si-attribut de tâche).
  3. Vous définissez simplement la propriété après l'appel disponible. Comme la propriété ne sera modifiée que si elle n'est pas définie, cela fera ce que vous voulez.
8
<available filepath="/path/to/foo" property="foosThere" value="true"/> 
<property name="foosThere" value="false"/> 

L'affectation de foosThere ne réussira que si elle n'a pas déjà été définie sur true par votre vérification de la disponibilité.

Questions connexes