如何在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构建文件和子Ant文件,所以拥有"全部"功能会非常方便。

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

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

您还可以设置一个默认任务,该任务将在您键入ant时运行。默认属性位于项目元素中。

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

因为Ant是声明性的,所以它不能很好地完成这类事情。不过,您可能会考虑script任务。

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中删除"run"(以及没有名称的隐式目标),以防止递归。

相关内容

  • 没有找到相关文章

最新更新