thanks all for the clarifications. the doc update does help explain things. it was surprising for me, but that was just because i hadn't looked closely at the output from our automated build until that point. changing the <call> tasks into depends enabled me to shave 2 minutes off our build time, which is always nice. cheers, owen.
On 5/13/05, Gert Driesen <[EMAIL PROTECTED]> wrote: > > Hi Troy, > > I've clarified the <call> task docs a bit (in cvs). I hope this will clear > things up for you. > > ----------- > > To avoid dependent targets from being executed more than once, two options > are available: > > > Add an "unless" attribute with value "${target::has-executed('<target > name>')}" to the dependent targets. > Set the "cascade" attribute on the <call> task to false (recommended). > cascase = Execute the specified targets dependencies -- even if they have > been previously executed. The default is true. > > --------- > > I've also updated the example: > > This shows how a project could 'compile' a debug and release build using a > common compile target. > <project default="build"> > <property name="debug" value="false" /> > <target name="init"> > <echo message="initializing" /> > </target> > <target name="compile" depends="init"> > <echo message="compiling with debug = ${debug}" /> > </target> > <target name="build"> > <property name="debug" value="false" /> > <call target="compile" /> > <property name="debug" value="true" /> > <call target="compile" /> > </target> > </project> > > > > The cascade parameter of the <call> task defaults to true, causing the > "init" target to be executed for both the "debug" and "release" build. > > This results in the following build log: build: > > init: > > [echo] initializing > > compile: > > [echo] compiling with debug = false > > init: > > [echo] initializing > > compile: > > [echo] compiling with debug = true > > BUILD SUCCEEDED > > > > If the "init" should only be executed once, set the cascade attribute of the > <call> task to false. > > The build log would then look like this: build: > > init: > > [echo] initializing > > compile: > > [echo] compiling with debug = false > > compile: > > [echo] compiling with debug = true > > BUILD SUCCEEDED > > Hope this helps, > > Gert > > > ________________________________ > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf > Of Troy Laurin > Sent: vrijdag 13 mei 2005 7:26 > To: Ian MacLean > Cc: Gary Feldman; NAnt Users > Subject: Re: [Nant-users] mixing call and depends > > > > > > On 5/13/05, Ian MacLean <[EMAIL PROTECTED]> wrote: > > > > Gary Feldman wrote: > > > Check out the cascade attribute of the <call> task, > > > > http://nant.sourceforge.net/nightly/latest/help/tasks/call.html > . > > > > > Thats exactly right - maybe another doc fix is required. cascade="true" > > means execute dependencies and is the default. > > > > From the original email it sounds like the called task's dependencies are > being executed even though they have already been called. My understanding > of the cascade attribute from the documentation is that is governs whether > the dependencies will be evaluated _at all_... that is, if cascade="false", > then execute only the called target; if cascade="true", then evaluate the > called target's dependencies as normal... ie, execute the called target's > dependencies if they haven't already been executed. > > Or is cascade more like an "extended force", whereby the called task and its > entire dependency tree will always be executed? > > > -- > Troy -- Owen Rogers | http://dotnetjunkies.com/weblog/exortech | CruiseControl.NET - http://ccnet.thoughtworks.com ------------------------------------------------------- This SF.Net email is sponsored by Oracle Space Sweepstakes Want to be the first software developer in space? Enter now for the Oracle Space Sweepstakes! http://ads.osdn.com/?ad_ids93&alloc_id281&op=click _______________________________________________ Nant-users mailing list Nant-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users