Да, зависимости выполняются до оценки условий.
Из руководства 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).