我想执行所有目标,而不是指定每个目标。
例如:
<?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"(以及没有名称的隐式目标),以防止递归。