You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by Steve Loughran <st...@hpl.hp.com> on 2004/01/22 11:14:35 UTC
task available task
just thought...who else thinks it would be handy to have a task that
probed for a task being defined at that point in the build.
e.g.
<taskavailable property="nice.present" task="nice"/>
To date we can do the thing with the classname, but that requires
knowing the full classname, an implementation detail that should not matter,
Assuming this is a good thing,
1. what is the trick for looking up a taskname?
2. what should the task do? It could set the property to the name of the
impl class.
3. what about namespaces?
-steve
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: task available task
Posted by Peter Reilly <pe...@corvil.com>.
Some quick answers without writing code;
Steve Loughran wrote:
>
> just thought...who else thinks it would be handy to have a task that
> probed for a task being defined at that point in the build.
>
>
> e.g.
>
> <taskavailable property="nice.present" task="nice"/>
>
> To date we can do the thing with the classname, but that requires
> knowing the full classname, an implementation detail that should not
> matter,
>
>
> Assuming this is a good thing,
>
> 1. what is the trick for looking up a taskname?
Use def = ComponentHelper#getDefinition(componentname)
note that in ant1.6.0 tasks and datatypes are in the same map - so
this would return the anttypedefinion
for "fileset" as well as "echo". Note that this will return sucessfully
for optional tasks - like "script".
The available task would also need to check if the class of the
anttypedefintion can be found:
i.e. if def.getExposedClass(getProject()) is present.
>
> 2. what should the task do? It could set the property to the name of
> the impl class.
In ant1.6.0 things are a little more compilicated - macrodefs,
scriptdefs etc are also tasks - it would
make more sense to set the property to "yes".
>
> 3. what about namespaces?
Namespaces URIs + task name are mapped to a component name as URI + ":"
+ taskname
so ComponentHelper#getDefinition("antlib:net.sf.antcontrib:for") would
work for:
<project xmlns:ac="antlib:net.sf.antcontrib">
<taskavailable property="for.present" task="antlib:net.sf.antcontrib:for"/>
</project>
Users may expect the following:
<project xmlns:ac="antlib:net.sf.antcontrib">
<taskavailable property="for.present" task="ac:for"/>
</project>
Peter
>
> -steve
>
>
> ---------------------------------------------------------------------
> 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