Hello Res Pons,
By design the <antcall> task loads an new "ANT" session in which the "target"
task is run in and when the "target" task is completed the "ANT" session is
destroyed and no property values/path refs are carried back into the calling
session (think of the <antcall> task as a subroutine call where all the state
(i.e. property creation/assingments) is kept in local variables, when the
rountine finishes all the local variables are gone).
Prior to some earlier verison (ANT 1.6 I believe) the only way to "chain"
targets together and allow property values to remain was through the
depends="<list of targets>" attribute because each of the dependent targets
would run in same "ANT" session.
After the ANT 1.6, the <macrodef> task was created which allowed you to define
a resuable set of ANT tasks that ran under the same "ANT" session. If within a
<macrodef> task you set a property (or path set) it would be visible (and
final) for the life of the 'ANT' session.
You can re-write you example, using <macrodef>s as follows:
<macrodef name="newbuildnum" >
<sequential>
<buildnumber file="build/build.number"/>
<property name="full.build.number" value="${build.number}" />
<echo message="And the full build.number in destination target is ==>
${full.build.number}" />
</sequential>
</macrodef>
<target="callbuildnumber" >
<!-- we now invoke the macrodef we created. Note we reference the macrodef as
an element
just a "custom" task --->
</newbuildnum>
<echo message="And the full build.number in calling target is ==>
${full.build.number}" />
</target>
Please read up on the <macrodef> task in the ANT help for further information
on this powerful new addition.
Also for the ANT documentation group, I might be nice to add some verbage to
the <antcall> task documentation pointing that fact that properties values are
transported across the <antcall>.
After all that has been said, if you REALLY REALLY need to bring back some
property values from a <antcall> invocation you can look into the <antcallback>
task from the ant-contrib project, however I would use that only as a last
resort.
----- Original Message ----
From: Res Pons <[EMAIL PROTECTED]>
To: [email protected]
Sent: Thursday, March 16, 2006 6:52:54 PM
Subject: Antcall task not doing what I want it to do!
Hi everyone!
I'm making an antcall from the source target to its destination target.
<targe="callbuildnumber" >
<antcall target="newbuildnum" />
<echo message="And the full build.number in calling target is ==>
${full.build.number}" />
</targe>
<targe="newbuildnum" >
<buildnumber file="build/build.number"/>
<property name="full.build.number" value="${build.number}" />
<echo message="And the full build.number in destination target is ==>
${full.build.number}" />
</targe>
Naturally the echo stmt in the newbuildnum target works but how do I get it
back to callbuildnumber target, the echo stmt in this target does not work?
_________________________________________________________________
Is your PC infected? Get a FREE online computer virus scan from McAfee
Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]