You can use the bool target::has-executed(name) function inside of the  
process-traces target instead of a dependency check.

Ie, the process-traces target would also contain a chain of 'call'  
tasks, but each would contain this 'unless' test.

For example, inside process-traces, you'd have:

<call target="check-trends-dir" unless="${target::has-executed('check- 
trends-dir')}"/>

you could wrap this in a custom task (callonce?) that essentially  
performs:

<call target="${targetname}" unless="${target::has- 
executed(targetname)}"/>

Hope that helps.
dominic

On Sep 3, 2008, at 8:56 PM, Steve Kapinos wrote:

> Found my own answer...
>
> http://nant.sourceforge.net/release/0.85-rc1/help/fundamentals/targets.h
> tml
>
> " A target gets executed only once, even when more than one target
> depends on it (see the previous example). However, when the <call>  
> task
> is used to execute a target, both the target and all its dependent
> targets will be re-executed."
>
> Since I'm trying to use targets as basically functions... I'm stuck in
> this way due to call.  Any better ideas on how to structure this  
> where I
> have a reusable block of code that I want to run again with simply
> different inputs?
>
> -Steve
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Steve
> Kapinos
> Sent: Wednesday, September 03, 2008 8:53 AM
> To: nant-users@lists.sourceforge.net
> Subject: [NAnt-users] dependancy persistance or resetting?
>
> I have a build file setup where one main body, calls several other
> targets acting like functions.  It was setup this way because the
> sequence of the events was critical, and the job was specified it  
> had to
> run in a single pass.
>
> So my main target looks like this
>
>       <target name="all" depends="" description="runs full test
> suite">
>               <!-- Run average test -->
>                       <call target="cleandatabase"/>
>                       <property name="testtype" value="average"/>
>                       <call target="jmetertest-average"/>
>                       <!-- Call process-traces to parse logdir output
> and tag with testtype -->
>                       <call target="process-traces"/>
>
>               <!-- Run peak test -->
>                       <call target="cleandatabase"/>
>                       <property name="testtype" value="peak"/>
>                       <call target="jmetertest-peak"/>
>                       <!-- Call process-traces to parse logdir output
> and tag with testtype -->
>                       <call target="process-traces"/>
>
>               <!-- Create trending graphs as both runs are now in
> accumulated.data.dir  -->
>                       <call target="create-trend-graphs"/>
>       </target>
>
> Note the call target to 'process-traces' is called twice and at the  
> end,
> 'create-trend-graphs' is called.  My question comes from the
> dependencies set on those targets.  'process-traces' is defined as
>
>       <target name="process-traces"
> depends="check-trends-dir,build-processing-tool,get-svn-revision"
> description="Processing of trace from test run">
>
> This runs fine.. but when 'process-traces' is ran the second time for
> the peak part of the test, the dependant targets are all ran again.   
> The
> fact they were ran the first time 'process-traces' was called, seems  
> to
> be forgotten.
>
> I have the same problem with create-trend-graphs, which has a  
> dependency
> set for process-traces (for manual runs outside of the larger test
> target).  Even tho process-traces was called twice, when the last  
> <call
> target="create-trend-graphs"/> was ran, 'process-traces' would be run
> again.
>
> Does dependency tracking not persist across an entire run of nant?   
> Does
> using call target change its behavior?
>
> I've solved the problem for now simply by removing dependancies where
> they were causing problems if they ran twice, and ignoring those that
> are harmless, but it makes the individual targets less robust.
>
>
> ------------------------------------------------------------------------
> -
> This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> Grand prize is a trip for two to an Open Source event anywhere in the
> world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> NAnt-users mailing list
> NAnt-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nant-users
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's  
> challenge
> Build the coolest Linux based applications with Moblin SDK & win  
> great prizes
> Grand prize is a trip for two to an Open Source event anywhere in  
> the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> NAnt-users mailing list
> NAnt-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nant-users


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to