Ответ 1
Да, зависимости выполняются до того, как условия будут оценены.
Из руководства Ant:
Важно: атрибуты if и if позволяют включать или отключать только те объекты, к которым они прикреплены. Они не контролируют, зависят ли цели, которые условная цель зависит от того, выполняются ли они. Фактически, они даже не оцениваются до тех пор, пока цель не будет выполнена, и все ее предшественники уже запущены.
Вы также могли бы попробовать себя:
<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).