从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,那么执行的顺序是什么?它会改变以前的订单吗?
答案 0 :(得分:2)
使用示例中指定的目标:
<target name="A" />
<target name="B" depends="A" />
<target name="C" depends="B" />
<target name="D" depends="C,B,A" />
如果您执行D
,执行顺序将为A
,B
,C
,D
。这是由于依赖链 - 依赖的目标必须在依赖于它的目标之前执行。如果您仅使用depends
替换D
的{{1}}属性,那么您的执行顺序仍然相同。
此示例突出显示的是依赖关系可能不会按照C
属性中指定的顺序执行。例如,如果您刚刚拥有这些目标:
depends
并执行<target name="A" />
<target name="B" />
<target name="C" />
<target name="D" depends="C,B,A" />
,执行顺序现在与D
属性的顺序相匹配 - 即depends
,C
,B
,{{ 1}}。