根据条件直接和间接调用Ant目标

时间:2017-07-12 13:36:13

标签: ant

我的构建文件中定义了以下默认目标:

<target name="main" depends="generate.doc" unless="generated.doc.present"/>

当doc文件已存在时,将设置该属性。在那种情况下,我不想做任何事情。但是,它不起作用,因为依赖目标总是在评估条件之前执行。

我仍然需要能够直接调用依赖目标并执行它,无论输出是否已经存在。因此,这样的事情是行不通的:

<target name="main" depends="generate.doc"/>
<target name="generate.doc" unless="generated.doc.present">...</target>

在主目标中没有使用antcall是否有解决方案?

1 个答案:

答案 0 :(得分:0)

在下面的示例中,main <target>已更改为具有两个依赖项。名为<target>的新-pre-conditions将在generate.doc之前运行。

仅当-pre-conditions属性已设置时,<target> skip-generate.doc才会设置generated.doc.present属性。

generate.doc <target>已更改,因此如果-pre-conditions设置了skip-generate.doc属性,则会跳过它。

通过这些更改,generate.doc将始终在直接调用时运行。

<target name="-pre-conditions">
    <condition property="skip-generate.doc">
        <isset property="generated.doc.present"/>
    </condition>
</target>

<target name="main" depends="-pre-conditions, generate.doc"/>

<target name="generate.doc" unless="skip-generate.doc">
    <echo>generate.doc running</echo>
</target>