我有一个目标,如果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目标的内容复制粘贴到预编译目标中,但我希望保持目标干净利落。
答案 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
之前运行。