2010-10-25 3 views

Répondre

19

Oui, les dépendances sont exécutées avant l'évaluation des conditions.


De l'Ant manual:

Important: le cas et à moins que les attributs permettent uniquement ou désactiver la cible à laquelle ils sont attachés. Ils ne contrôlent pas si les cibles dont une cible conditionnelle dépend ou non sont exécutées. En fait, ils ne sont même évalués que lorsque la cible est sur le point d'être exécutée et que tous ses prédécesseurs ont déjà été exécutés.


Vous pouvez aussi vous avez essayé:

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

Je suis définissant la propriété testSetupDone dans la cible en fonction, et la sortie est:

Buildfile: build.xml 

-runTests: 

runTestsIfTestSetupDone: 
    [echo] Test 

BUILD SUCCESSFUL 
Total time: 0 seconds 

cible -runTests quels exécuté, même si testSetupDone n'est pas défini à ce moment, et runTestsIfTestSetupDone est exécuté après ards, donc depend est évalué avantif (en utilisant 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

Ce n'est pas une réponse à la question qui a été posée. –

Questions connexes