0

我有一个目标,如果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 目标?也就是说,如果属性 my_step 为 true,则预编译步骤将执行 -do_my_step 目标。显然,我可以简单地将 -do_my_step 目标的内容复制粘贴到预编译目标中,但我想保持我的目标干净地分开。

4

2 回答 2

1

带有前缀“-”的目标名称是一种使目标有点“私有”的常见做法,因为不可能通过命令行调用它。ant -f yourbuildfile.xml -yourprivatetarget将不起作用,因为 ant 命令行界面使用前导“-”作为选项。所以从你的目标名称中去掉前导的'-'来调用它还ant -f yourbuildfile.xml do_my_step
考虑:
“..问题。我如何运行 make pre-compile execute -do_my_step 目标?..”
Ant 有antcall任务,用于在同一个目标中调用一个目标构建脚本。但是应该避免使用 antcall,因为它会打开一个新的项目范围(因此它需要更多内存并且会减慢您的构建速度)并破坏通常通过<target name="..." depends"=...">.
antcall自 ant 1 以来是多余的。

于 2013-05-08T21:38:46.987 回答
0
<target name="pre-compile" if="my_step" depends="-do_my_step">
...
</target>

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

于 2013-05-08T18:16:09.627 回答