我的构建文件中定义了以下默认目标:
<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
是否有解决方案?
答案 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>