Ant任务中的多个依赖项

40
如果我有三个目标,一个是all,一个是compile,一个是jsps,我该如何让all依赖于另外两个呢?
这样做可以吗:
<target name="all" depends="compile,jsps">

......还是会这样吗:

<target name="all" depends="compile","jsps">

或许还可以尝试其他的方法?

我尝试搜索一些基于蚂蚁脚本的例子,但是我没找到带有多个依赖项的例子。

4个回答

73

前者:

<target name="all" depends="compile,jsps">

这在Ant手册中有详细说明。


6
注意跟随这里的例子,不要在逗号后面加空格(这个抓住了我)。 - joejag
4
@joejag 我的程序可以接受逗号后面有空格或没有空格,你用的是哪个版本? - Brett Kail

11

这是排在最前面的。

如果你想快速查看,请使用echo标签。

<target name="compile"><echo>compile</echo></target>

<target name="jsps"><echo>jsps</echo></target>

<target name="all" depends="compile,jsps"></target>

如果您想更灵活地安排任务顺序,您也可以查看antcall标签。


10
<target name="all" depends="compile,jsps">

这在Ant手册中有详细说明。


5

另一种方法是使用antcall,如果您想并行运行依赖目标,则更加灵活。假设编译和jsps可以并行运行(即以任何顺序),则所有目标都可以编写为:

<target name="all" description="all target, parallel">
  <parallel threadCount="2">
    <antcall target="compile"/>
    <antcall target="jsps"/>
  </parallel>
</target>

请注意,如果目标无法并行运行,则最好使用具有depend属性的第一种方式,因为antcalls仅在执行时解析,如果被调用的目标不存在,则构建将仅在该点失败。

非常感谢您的有用帖子!由于某种原因,我找到的所有关于<parallel>、<for>和<foreach>的信息都没有说明如何并行化非标准Ant任务,而是目标。答案就是我必须使用<antcall>!我将这种方法与<for>结合起来,以避免为每个列表条目复制粘贴<antcall>,它也起作用了。 - Alexander Samoylov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接