根据条件直接和间接调用Ant目标
Call Ant target directly and indirectly based on condition
我在构建文件中定义了以下默认目标:
<target name="main" depends="generate.doc" unless="generated.doc.present"/>
当文档文件已经存在时设置属性。在那种情况下,我什么都不想做。但是,它不起作用,因为从属目标总是在评估条件之前执行。
我仍然需要能够直接调用依赖目标并执行它,无论输出是否已经存在。因此这样的事情是行不通的:
<target name="main" depends="generate.doc"/>
<target name="generate.doc" unless="generated.doc.present">...</target>
有没有在主目标中不使用antcall
的解决方案?
在下面的示例中,main
<target>
已更改为具有两个依赖项。名为 -pre-conditions
的新 <target>
将在 generate.doc
.
之前 运行
仅当 generated.doc.present
属性 已设置时,-pre-conditions
<target>
才设置 skip-generate.doc
属性。
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>
我在构建文件中定义了以下默认目标:
<target name="main" depends="generate.doc" unless="generated.doc.present"/>
当文档文件已经存在时设置属性。在那种情况下,我什么都不想做。但是,它不起作用,因为从属目标总是在评估条件之前执行。
我仍然需要能够直接调用依赖目标并执行它,无论输出是否已经存在。因此这样的事情是行不通的:
<target name="main" depends="generate.doc"/>
<target name="generate.doc" unless="generated.doc.present">...</target>
有没有在主目标中不使用antcall
的解决方案?
在下面的示例中,main
<target>
已更改为具有两个依赖项。名为 -pre-conditions
的新 <target>
将在 generate.doc
.
仅当 generated.doc.present
属性 已设置时,-pre-conditions
<target>
才设置 skip-generate.doc
属性。
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>