在NAnt中执行目标的顺序

时间:2014-12-08 04:47:10

标签: target nant depends

从NAnt帮助页面(http://nant.sourceforge.net/release/latest/help/fundamentals/targets.html):

  

NAnt尝试在的depends属性中执行目标   他们从左到右排序。有可能是一个目标   当早期目标依赖于它时,可以提前执行:

<target name="A"/>
<target name="B" depends="A" />
<target name="C" depends="B" />
<target name="D" depends="C,B,A" /
     

假设我们想要执行目标D.从它的depends属性,你可能认为第一个目标C,然后是B,然后是A   执行。错误! C取决于B,B取决于A,所以首先是A   执行,然后是B,然后是C,最后是D。

由于C依赖于B而B取决于A,因此目标(D)的depends属性不应仅为C吗?

如果我单独使用“C”取代D,那么执行的顺序是什么?它会改变以前的订单吗?

1 个答案:

答案 0 :(得分:2)

使用示例中指定的目标:

<target name="A" />
<target name="B" depends="A" />
<target name="C" depends="B" />
<target name="D" depends="C,B,A" />

如果您执行D,执行顺序将为ABCD。这是由于依赖链 - 依赖的目标必须在依赖于它的目标之前执行。如果您仅使用depends替换D的{​​{1}}属性,那么您的执行顺序仍然相同。

此示例突出显示的是依赖关系可能不会按照C属性中指定的顺序执行。例如,如果您刚刚拥有这些目标:

depends

并执行<target name="A" /> <target name="B" /> <target name="C" /> <target name="D" depends="C,B,A" /> ,执行顺序现在与D属性的顺序相匹配 - 即dependsCB,{{ 1}}。