【问题标题】:Can an Ant target depend on completion of one of its dependencies, but not both?Ant 目标能否依赖于其依赖项之一的完成,但不能同时依赖两者?
【发布时间】:2011-12-21 14:52:40
【问题描述】:

我正在尝试创建一个在其他两个目标之一完成时运行的 Ant 目标。基本上,假设我有三个目标 A1、A2 和 B,我希望 B 只有在 A1 OR A2 运行时才运行。 A1 和 A2 取决于条件,因此 A1 或 A2 将运行(但永远不会同时运行)。

例如:

<target name="A1" if="${conditionalVar}"> 
<target name="A2" unless="${conditionalVar}">
<target name="B" depends="????????">

目标 B 的“依赖”应该是什么?有没有办法做到这一点?

【问题讨论】:

    标签: ant depends


    【解决方案1】:

    是的,这样的配置是可以的,而且不是很复杂:

    诀窍是设置一个在设置后将被测试的属性(例如,将其称为“taskA1.use”)。

    <target name="A1" if="taskA1.use" />
    <target name="A2" unless="taskA1.use" />
    <target name="B" depends="A1,A2" />
    

    因此,即使 B 依赖于任务 A1 和 A2,也只会执行一个,具体取决于是否设置了属性“taskA1.use”。

    【讨论】:

    • 但是 B 依赖于 A1 和 A2,所以不是都必须运行才能使 B 发生吗?或者即使设置了 taskA1.use 并因此 A2 不会运行其所有代码,A2 是否会“计数”为正在运行?
    • 在运行目标之前评估条件。因此,如果 taskA1.use 未设置,则 A1 将不会执行并且不会“算作正在运行”。
    • A1、A2目标都被调用,由于属性条件,只有一个被实际执行。
    猜你喜欢
    • 2020-07-24
    • 2019-12-23
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2013-01-30
    • 2021-05-14
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多