2010-11-03 8 views
7

Domandacondizioni Ant - che viene prima 'se' o 'meno'

Se un obiettivo formica utilizza sia se e a meno, che viene valutata prima?

Esempio

Cosa viene prima, l'uovo o la gallina? . . .

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

Sarebbe ant valutare la proprietà di pollo prima? O la proprietà delle uova?

risposta

9

Non è davvero una questione di valutazione, poiché le proprietà sono o non sono impostate prima che il bersaglio venga chiamato.

EDIT: ho guardato la fonte 1.8.1 e la logica è la seguente:

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; 
} 

Così il unless non importa a meno che le if passaggi. Ma tieni presente che questi non hanno nulla a che fare con la valutazione delle proprietà. Li guarda solo per vedere se sono impostati.

+0

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