[prev in list] [next in list] [prev in thread] [next in thread]
List: ant-dev
Subject: Re: antlib namespace and uri usage
From: Peter Reilly <peter.kitt.reilly () gmail ! com>
Date: 2009-04-23 9:27:35
Message-ID: dffc72020904230227g6ddfc705hb25d12dc2baa0607 () mail ! gmail ! com
[Download RAW message or body]
This is in the ant manual.
http://ant.apache.org/manual/CoreTypes/antlib.html#currentnamespace
There is a special xml namespace (ant:current) for typedefs defined
within an antlib.
The namespace is only active during the processing of the antlib.
Peter
On Thu, Apr 23, 2009 at 7:53 AM, Gilles Scokart <gscokart@gmail.com> wrote:
> Yesterday I lost 1 hour to fix an antlib namespace issue. I have no found
> how to fix it, but I still don't clearly understand what is actually wrong
> (=what error message should ant report).
>
> I have an antlib defined in an XML file like this :
>
> <antlib xmlns:deco="antlib:net.sourceforge.deco.ant">
> <taskdef name="analyze"
> classname="net.sourceforge.deco.ant.Analyze"
> />
> </antlib>
>
>
> And I have my project was using it like this :
>
> <project name="build_base" xmlns:deco="net.sourceforge.deco.ant">
>
> <typedef resource="net/sourceforge/deco/ant/antlib.xml"
> uri="net.sourceforge.deco.ant">
> <classpath>
> <fileset dir="${build.script.dir}/lib/">
> <include name="deco*.jar"/>
> </fileset>
> <pathelement
> location="${build.script.dir}/lib/asm-3.1.jar" />
> </classpath>
> </typedef>
>
> </project>
>
>
> This was working fine, and I could use <deco:analyse> task in my build.
>
> But then I added a presetdef in my anlib that refined analyze like this
> (simplified version):
>
> <antlib xmlns:deco="antlib:net.sourceforge.deco.ant">
> <taskdef name="analyze"
> classname="net.sourceforge.deco.ant.Analyze"
> />
> <presetdef name="check-compile">
> <deco:analyze type="COMPILE">
> <deco:check-compile-report/>
> </deco:analyze>
> </presetdef>
>
> </antlib>
>
> This was failing because deco:analyze was not found when presetdef
> executed.
> I tried unsuccesfully to change the usage of the namespace in different way,
> then I plugged a debugger and I found that the analyze task did exist, but
> with the name net.sourceforge.deco.ant:analyze while
> antlib:net.sourceforge.deco.ant:analyze was searched.
>
> The fix was to change the uri used in my build from net.sourceforge.deco.ant
> to antlib:net.sourceforge.deco.ant.
>
> But what is exactly wrong?
>
> Was my initial declaration wrong? Should it be mandatory to use exactly the
> same URI in the typedef loading the antlib than in the antlib declaration
> For the moment it is not mandatory, If you don't do, you may not notice that
> you don't do. But you might have the issue I had. In that case, we should
> at least have a warning (failing would break backward compatibility).
>
> Or are was it the intention to let the user of an antlib freely choose its
> uri? I doubt. But if it is, how can I reference my own tasks into the
> antlib.xml file ?
>
>
> Gilles Scokart
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic