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: user@ant.apache.org
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]

Reply via email to