一、概述

        ant是Ant的内置任务,可以用来运行指定的构建文件,所以可以用来构建子项目。如果调用的是同一个构建文件,那么就必须在target中使用ant。

二、属性

        antfile:使用的构建文件,默认为build.xml(其路径为相对于dir属性所在的目录)。如果没有配置antfle属性,会使用dir属性指定的目录下的build.xml。

        dir:作为新的project的basedir的目录(在useNativeBasedir设置为false时)。如果inheritAll设置为true,默认值为当前project的basedir,否则没有默认值。dir的值会覆盖新的project的basedir属性。

        target:新的project需要执行的target,如果没有设置,默认为新的project的默认target。

        output:写入ant输出的文件名。如果设置了dir属性,文件位置就是相对于dir所在目录,否则就是当前project的基础目录。

        inheritAll:如果为true,会将所有属性传递到新的project,默认为true。如果为false,那么只有命令行中的参数会被传递到新的porject中。无论true还是false传入新project的属性都会覆盖新的project中的属性。

        inheritRefs:如果为true,会将所有引用传递到新的project,默认为false。

        useNativeBasedir:如果设置为true,在命令行运行时会使用子构建的basedir。从Ant1.8.0起默认为false。


        可以通过在当前project的ant元素中嵌套property标签来给新的project设置属性,无论inheritAll为true还是false,这些属性都会传递给新的project。可以通过这种方式对新的project进行参数的初始化。使用这种方式对同一个参数进行设置时,最后一次设置的值会生效。通过命令行传入的参数不能通过这种方式进行覆盖。ant1.6起,可以通过propertyset设置一组属性。

        从Ant1.8.0开始,嵌套的ant结构也是一样,如果构建文件A通过ant调用了B且通过嵌套property设置了属性,而B中又通过ant调用了C,那么A的ant中嵌套的property属性对于C也是可见的。

        从Ant1.6.3开始,如果要执行多个target,可以通过在ant中嵌套多个target来取代target属性。这些target会按照指定的顺序执行。

三、简单示例

<ant dir="child" antfile="subbuild.xml" target="mytarget" />
<ant target="mytarget" useNativeBasedir="true"/>
<ant antfile="subbuild.xml">
        <property name="param1" value="value1"/>
</ant>
<ant dir="child">
<target name="target1"/>
<target name="target2"/>
</ant>