Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant target';s";如果;及;“视情况而定”;评价的?_Ant - Fatal编程技术网

Ant target';s";如果;及;“视情况而定”;评价的?

Ant target';s";如果;及;“视情况而定”;评价的?,ant,Ant,也就是说,当testSetupDone的计算结果为false时调用以下目标是否会执行依赖关系链中的目标 <target name="-runTestsIfTestSetupDone" if="testSetupDone" depends="-runTests" /> 是的,在评估条件之前执行依赖项 从: 重要提示:如果和除非属性仅启用或禁用它们所连接的目标。它们不控制是否执行条件目标所依赖的目标。事实上,直到目标即将执行,并且其所有前辈都已经运行,它们才得到评估 你也可以自己尝

也就是说,当testSetupDone的计算结果为false时调用以下目标是否会执行依赖关系链中的目标

<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