2010-11-03 9 views
7

Preguntacondiciones Ant - qué es lo primero 'si' o 'menos'

Si una tarea ant utiliza tanto si y menos, lo que se evalúa primero?

Ejemplo

¿Qué es lo primero, la gallina o el huevo? . . .

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

¿Eva evaluar primero la propiedad de pollo? O la propiedad del huevo?

Respuesta

9

No es realmente una cuestión de evaluación, ya que las propiedades están o no establecidas antes de que se llame al objetivo.

EDIT: Me miraba la fuente 1.8.1 y la lógica es la siguiente:

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

Así que la unless no importará a menos que los if pases. Pero tenga en cuenta que estos no tienen nada que ver con la evaluación de propiedades. Solo los busca para ver si están configurados.

+0

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

Cuestiones relacionadas