【问题标题】:Order of execution of targets in NAntNAnt 中目标的执行顺序
【发布时间】:2014-12-08 04:47:10
【问题描述】:

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

NAnt 尝试执行依赖属性中的目标 它们从左到右出现的顺序。有可能是一个目标 当更早的目标依赖于它时,可以更早地执行:

<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,那么target(D)的depends属性不应该只有C吗?

如果我将 D 的依赖项单独替换为“C”,执行顺序是什么?它会改变以前的顺序吗?

【问题讨论】:

    标签: target nant depends


    【解决方案1】:

    使用示例中指定的目标:

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

    如果执行D,则执行顺序为ABCD。这是由于依赖链——依赖的目标必须在依赖它的目标之前执行。如果您仅将 Ddepends 属性替换为 C,那么您是对的 - 执行顺序仍然相同。

    然而,这个例子强调的是,依赖关系可能不会按照depends属性中指定的顺序执行。例如,如果您只有以下目标:

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

    并执行D,执行顺序现在将匹配depends属性的顺序-即CBAD

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      相关资源
      最近更新 更多