如何在Ant构建文件中运行所有目标?

时间:2011-06-02 12:31:36

标签: ant

我想执行所有目标,而不是指定每个目标。

例如:

<?xml version="1.0"?>
<project name="Kte" default="all" basedir="/home/Kte">

    <target name="target1">
    </target>

    <target name="target2">
    </target>
</project>

目前我使用:

$ ant target1
$ ant target2

我想用:

$ ant

并且已经构建了两个目标(这只是一个示例。现实我有一个很长的更改Ant构建文件与子蚂蚁文件,所以有一个“全部”功能非常方便。

3 个答案:

答案 0 :(得分:22)

你可以创建一个ant任务all,这取决于你拥有的所有特定目标......

<target name="all" depends="target1, target2, ... ">
</target>

ant all

答案 1 :(得分:4)

您还可以设置默认任务,只需键入ant即可运行。默认属性位于项目元素中。

<project name="foo" default="all">
  <target name="all" depends="target1, target2"/>
  <target name="target1">
   ...
  </target>
  <target name="target2">
   ...
  </target>
</project>

$ ant

答案 2 :(得分:2)

因为Ant是声明性的,所以它不能很好地完成这种事情。您可以考虑使用script task

Ant构建文件有一个隐式的未命名目标,它“保存”所有不属于命名目标的任务。所以,这个位于顶层,会做你所描述的。

<script language="javascript"><![CDATA[
    importClass( java.util.Vector );

    vec = new Vector( project.getTargets().keySet() );
    vec.setSize( vec.size( ) - 1 );
    project.executeTargets( vec );
]]>
</script>

(隐式目标出现在列表的末尾,因此调整大小以防止递归。)

如果您将该脚本放在'runner'目标中 - 这将执行构建文件中的所有其他目标 - 您需要从Vector中删除'runner'(以及隐含的target-with-no-name)防止递归。