2010-11-03 24 views
7

Questionconditions Ant - qui vient en premier 'si' ou 'moins'

Si une cible fourmi utilise à la fois si et à moins, qui est évalué en premier?

Exemple

Ce qui vient en premier, la poule ou l'œuf? . . .

<target name="prepare" if="chicken" unless="egg" > 
    <echo>Dinner time. Chicken is served!</echo> 
</target> 

Est-ce que la fourmi évaluerait la propriété du poulet en premier? Ou la propriété de l'oeuf?

Répondre

9

Ce n'est pas vraiment une question d'évaluation, puisque les propriétés sont ou ne sont pas définies avant l'appel de la cible.

EDIT: Je regarde la source 1.8.1 et la logique est la suivante:

if (!testIfAllows()) { 
    project.log(this, "Skipped because property '" + project.replaceProperties(ifCondition) 
      + "' not set.", Project.MSG_VERBOSE); 
    return; 
} 
if (!testUnlessAllows()) { 
    project.log(this, "Skipped because property '" 
      + project.replaceProperties(unlessCondition) + "' set.", Project.MSG_VERBOSE); 
    return; 
} 

Ainsi, le unless ne sera pas question à moins que les if passe. Mais gardez à l'esprit, ceux-ci n'ont rien à voir avec l'évaluation des propriétés. Il les regarde juste pour voir s'ils sont réglés.

+0

La classe appropriée est [org.apache.tools.ant.Target] (http://svn.apache.org/repos/asf/ant/core/tags/ANT_181/src/main/org/apache/tools /ant/Target.java) –