turnos simulador puntos matricula licencias ant

simulador - ant turnos



¿En qué orden se evalúan "if" y "depends" del objetivo Ant? (2)

Es decir, ¿llamar al siguiente objetivo cuando testSetupDone se evalúa como falso, ejecutar los objetivos en la cadena de dependencia?

<target name="-runTestsIfTestSetupDone" if="testSetupDone" depends="-runTests" />


De los documentos :

Ant tries to execute the targets in the depends attribute in the order they appear (from left to right). Keep in mind that it is possible that a target can get executed earlier when an earlier target depends on it: <target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="C,B,A"/> Suppose we want to execute target D. From its depends attribute, you might think that first target C, then B and then A is executed. Wrong! C depends on B, and B depends on A, so first A is executed, then B, then C, and finally D. Call-Graph: A --> B --> C --> D


Sí, las dependencias se ejecutan antes de que se evalúen las condiciones.

Del manual de Ant :

Importante: los atributos if y unless solo habilitan o deshabilitan el objetivo al que están adjuntos. No controlan si los objetivos de los que depende un objetivo condicional se ejecutan. De hecho, ni siquiera se evalúan hasta que el objetivo está a punto de ejecutarse, y todos sus predecesores ya se han ejecutado.

También podría haber intentado usted mismo:

<project> <target name="-runTests"> <property name="testSetupDone" value="foo"/> </target> <target name="runTestsIfTestSetupDone" if="testSetupDone" depends="-runTests"> <echo>Test</echo> </target> </project>

Estoy configurando la propiedad testSetupDone dentro del objetivo dependiente, y el resultado es:

Buildfile: build.xml -runTests: runTestsIfTestSetupDone: [echo] Test BUILD SUCCESSFUL Total time: 0 seconds

Target -runTests se ejecuta, aunque testSetupDone no está configurado en este momento, y runTestsIfTestSetupDone se ejecuta posteriormente, por lo que depend se evalúa antes if (usando Ant 1.7.0).