Call another target within the same build-file optionally
specifying some properties (param's in this context). This
task must no be used outside of a target
.
By default, all of the properties of the current project will be
available in the new project. Alternatively, you can
set the inheritAll attribute to false
and only
"user" properties (i.e., those passed on the command-line)
will be passed to the new project. In either case, the set of
properties passed to the new project will override the properties that
are set in the new project (See also the property task).
You can also set properties in the new project from the old project by using nested param tags. These properties are always passed to the new project and any project created in that project regardless of the setting of inheritAll. This allows you to parameterize your subprojects. Properties defined on the command line can not be overridden by nested <param> elements.
Nested <reference> elements can be used to copy references from the calling project to the new project, optionally under a different id. References taken from nested elements will override existing references that have been defined outside of targets in the new project - but not those defined inside of targets.
When a target is invoked by antcall, all of its dependent targets will also be called within the context of any new parameters. For example. if the target "doSomethingElse" depended on the target "init", then the antcall of "doSomethingElse" will call "init" during the call. Of course, any properties defined in the antcall task or inherited from the calling target will be fixed and not overridable in the init task -or indeed in the "doSomethingElse" task.
If the build file changes after you've started the build, the behavior of this task is undefined.
Attribute | Description | Required |
target | The target to execute. | Yes |
inheritAll | If true , pass all properties to the new Ant
project. Defaults to true .
|
No |
inheritRefs | If true , pass all references to the
new Ant project. Defaults to false . |
No |
inheritRefs
<antcall>
will not override existing references,
even if you set inheritRefs
to true. As the called build
files is the same build file as the calling one, this means it will
not override any reference set via an id
attribute at
all. The only references that can be inherited by the child project
are those defined by nested <reference>
elements or
references defined by tasks directly (not using the id
attribute).
Specifies the properties to set before running the specified target. See property for usage guidelines.
Used to choose references that shall be copied into the new project, optionally changing their id.
Attribute | Description | Required |
refid | The id of the reference in the calling project. | Yes |
torefid | The id of the reference in the new project. | No, defaults to the value of refid. |
You can specify a set of properties to be copied into the new project with propertysets.
since Ant 1.6.
<target name="default"> <antcall target="doSomethingElse"> <param name="param1" value="value"/> </antcall> </target> <target name="doSomethingElse"> <echo message="param1=${param1}"/> </target>
Will run the target 'doSomethingElse' and echo 'param1=value'.
<antcall ... > <reference refid="path1" torefid="path2"/> </antcall>
will copy the parent's definition of path1
into the
new project using the id path2
.
Copyright © 2000-2004 The Apache Software Foundation. All rights Reserved.