Hello Peter,
It seems like a work-around of another serious issue - <ant>&Co should
not be used at all when there is a chance that some tasks will be
executed twice or more times. There are now other mechanisms that work
better - <import> and <macrodef>.
- Alexey.
Peter Reilly wrote:
> For my site antlib, I am currently using a task <onceonly>
> which may be usefull to have as a std ant task (or ant-contrib task).
> The idea is that the task will only be run once, even if
> called multiple times (via ant, antcall, subant - indirectly
> via import).
>
> For example:
>
> <project default="caller">
> <onceonly>
> <echo>Initializing Project</echo>
> <!-- some complicated list of initializing tasks -->
> </onceonly>
>
> <target name="caller">
> <echo>In call</echo>
> <antcall target="callee"/>
> </target>
>
> <target name="callee">
> <echo>In callee</echo>
> </target>
>
> <project>
>
>
> Peter
>
>
>------------------------------------------------------------------------
>
>package net.sf.antextra;
>import java.util.Set;
>import java.util.HashSet;
>import java.util.Collections;
>import org.apache.tools.ant.taskdefs.Sequential;
>
>/**
> * Ant task to run a sequence of tasks only
> * once.
> * Usefull for setting up stuff in files that may
> * be called a number of times (via ant or import
> * for example).
> */
>public class OnceOnly extends Sequential {
> private static Set locations = new HashSet();
>
> /**
> * Execute the list of nested tasks by calling
> * super.execute() if this location has not been
> * seen before.
> */
> public void execute() {
> String location = getLocation().toString();
> synchronized(locations) {
> if (locations.contains(location)) {
> return; // Do nothing, action already done
> }
> locations.add(location);
> }
> super.execute();
> }
>}
>
>
>
>------------------------------------------------------------------------
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
>For additional commands, e-mail: dev-help@ant.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
|