一、概述
antcall是Ant内置的task,可以用来调用同一个构建文件中的target。Antcall必须在target中使用。
二、属性
target:需要执行的target。
inheritAll:如果为true,会传递所有的属性,默认为true。
inheritRefs:如果为true,会传递所有的引用,默认为false。
可以通过在antcall中嵌套param元素来传递属性,无论inheritAll为true还是false都会进行传递。使用这种方式定义同一属性时,最后一次的值会生效。这中方式不能覆盖命令行中定义的属性。当一个taget被antcall调用时,它所依赖的target也会被调用。无论是param中定义的属性还是从调用的target继承的属性,不管是在被调用的target还是被调用target所依赖的target中都不会被改变。从Ant1.6开始,还可以通过嵌套propertyset元素来为调用的target设置一组属性。
从Ant1.6.3开始,如果要执行多个target,可以通过在ant中嵌套多个target来取代target属性。这些target会按照指定的顺序执行。
三、简单示例
<project name="antcall" default="default">
<target name="init">
<property name="param1" value="value3"/>
<echo>${param1}</echo>
<tstamp>
<format property="current.year" pattern="yyyy"/>
<format property="DSTAMP" pattern="yyyy-MM-dd"/>
<format property="TSTAMP" pattern="HH:mm:ss"/>
<format property="dateversion" pattern="yyyy.MM.dd.HH.mm.ss" />
</tstamp>
</target>
<target name="default" >
<property name="param1" value="value1"/>
<antcall target="another" inheritAll="false">
<param name="param" value="value"/>
</antcall>
</target>
<target name="another" depends="init">
<property name="param" value="value1"/>
<property name="param1" value="value2"/>
<echo>param="${param}"</echo>
</target>
</project>