2010-10-25 5 views

Respuesta

19

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


Desde el Ant manual:

Importante: el caso y, a menos atributos sólo se activan o desactivan el objetivo al que están unidos. 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 tratado a sí mismo:

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

estoy estableciendo la propiedad testSetupDone dentro del objetivo en función, y la salida es:

Buildfile: build.xml 

-runTests: 

runTestsIfTestSetupDone: 
    [echo] Test 

BUILD SUCCESSFUL 
Total time: 0 seconds 

Target está -runTests ejecutado, aunque testSetupDone no está configurado en este momento, y runTestsIfTestSetupDone se ejecuta después ards, por lo que depend se evalúa antes deif (utilizando Ant 1.7.0).

4

De the docs:

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 
+3

Eso no es una respuesta a la pregunta que se hizo. –

Cuestiones relacionadas