Ant target';s";如果;及;“视情况而定”;评价的?
也就是说,当testSetupDone的计算结果为false时调用以下目标是否会执行依赖关系链中的目标Ant target';s";如果;及;“视情况而定”;评价的?,ant,Ant,也就是说,当testSetupDone的计算结果为false时调用以下目标是否会执行依赖关系链中的目标 <target name="-runTestsIfTestSetupDone" if="testSetupDone" depends="-runTests" /> 是的,在评估条件之前执行依赖项 从: 重要提示:如果和除非属性仅启用或禁用它们所连接的目标。它们不控制是否执行条件目标所依赖的目标。事实上,直到目标即将执行,并且其所有前辈都已经运行,它们才得到评估 你也可以自己尝
<target name="-runTestsIfTestSetupDone" if="testSetupDone" depends="-runTests" />
是的,在评估条件之前执行依赖项
从: 重要提示:如果和除非属性仅启用或禁用它们所连接的目标。它们不控制是否执行条件目标所依赖的目标。事实上,直到目标即将执行,并且其所有前辈都已经运行,它们才得到评估
你也可以自己尝试一下:
<project>
<target name="-runTests">
<property name="testSetupDone" value="foo"/>
</target>
<target name="runTestsIfTestSetupDone" if="testSetupDone" depends="-runTests">
<echo>Test</echo>
</target>
</project>
目标-执行runTests
,即使此时未设置testSetupDone
,并且之后执行runTestsIfTestSetupDone
,因此如果(使用Ant 1.7.0),在之前对依赖进行评估
Ant尝试按照依赖属性中的目标的顺序执行它们
显示(从左到右)。请记住,有可能
当较早的目标依赖于它时,可以较早地执行目标:
假设我们想从目标D的depends属性执行它,
您可能认为首先执行目标C,然后执行B,然后执行A。
错了!C依赖于B,B依赖于A,
首先执行A,然后执行B,然后执行C,最后执行D。
调用图:A-->B-->C-->D
这不是对所问问题的回答。
Buildfile: build.xml
-runTests:
runTestsIfTestSetupDone:
[echo] Test
BUILD SUCCESSFUL
Total time: 0 seconds
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