В каком порядке оцениваются «если» и «зависит» от цели Ant? - PullRequest
20 голосов
/ 25 октября 2010

То есть, вызовет ли следующую цель, когда testSetupDone оценивается как false, выполнить цели в цепочке зависимостей?

Ответы [ 2 ]

20 голосов
/ 25 октября 2010

Да, зависимости выполняются до оценки условий.


Из руководства Ant :

Важное замечание: атрибуты если и если только включить или отключить цель, к которой они присоединены. Они не контролируют, зависят ли цели, от которых зависит выполнение условной цели. Фактически, они даже не оцениваются, пока цель не будет выполнена, и все ее предшественники уже запущены.


Вы могли бы также попробовать себя:

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

Я устанавливаю свойство testSetupDone в зависимости от цели, и вывод:

Buildfile: build.xml

-runTests:

runTestsIfTestSetupDone:
     [echo] Test

BUILD SUCCESSFUL
Total time: 0 seconds

Цель -runTests выполняется, даже если testSetupDone не установлена ​​в данный момент, а runTestsIfTestSetupDone выполняется впоследствии, поэтому depend оценивается до if (с использованием Ant 1.7 +0,0).

5 голосов
/ 13 февраля 2013

С документы :

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...