Ant中的条件执行

时间:2013-05-08 16:50:05

标签: ant

我有一个目标,如果my_step==true

执行
<target name="pre-compile" if="my_step">
...
</target>

但我希望无论my_step的值如何,都可以使预编译目标可用,以便我可以使用ant do_my_step手动执行我的操作:

<target name"-do_my_step">
...
</target>

问题。如何运行make pre-compile execute -do_my_step target? 也就是说,如果属性my_step为true,则预编译步骤将执行-do_my_step target。 显然,我可以简单地将-do_my_step目标的内容复制粘贴到预编译目标中,但我希望保持目标干净利落。

2 个答案:

答案 0 :(得分:1)

带有前缀' - '的目标名称是使目标有些“私密”的常见做法,因为无法通过命令行调用它。 ant -f yourbuildfile.xml -yourprivatetarget将不起作用,因为ant命令行界面使用前导' - '作为选项。因此,请从目标名称中删除前导“ - ”以通过ant -f yourbuildfile.xml do_my_step来调用它 还要考虑:
“..问题。如何运行make pre-compile execute -do_my_step target?..” Ant具有antcall任务,用于在同一个buildcript中调用目标。但是应该避免使用antcall,因为它会打开一个新的项目范围(因此它需要更多内存并会减慢构建速度)并打破通常通过<target name="..." depends"=...">构建的依赖关系链。
antcall因为ant 1.6为此目的引入了macrodef(重用功能),所以是多余的。

答案 1 :(得分:0)

<target name="pre-compile" if="my_step" depends="-do_my_step">
...
</target>

调用pre-compile时,它将在-do_my_step之前运行。