> I have been thinking about using namespaces with antlibs like this:
> 
> <project>
>    <.. init properies .../>
>    <use xmlns:antcontrib="antlib:${ant-contrib.jar}"
>             xmlns:antelope="antlib:${antelope.jar}">
> 
>       <target name="test">
>            <antelope:if>
>                  ....
>            </antelope:if>
>            <antcontrib:foreach ...>
>         </target>
>     </use>
> 
> </project>
> 

That is almost the same thing as I had in mind.  Although I've been thinking
about some slight variations to this, where no top-level element like <use/>
would be necessary.  The Jelly style would be:

<project xmlns:antcontrib="antlib:${ant-contrib.jar}"
         xmlns:antelope="antlib:${antelope.jar}">
   <.. init properies .../>

   <target name="test">
        <antelope:if>
              ....
        </antelope:if>
        <antcontrib:foreach ...>
   </target>

</project>

Here <target/> is still toplevel and the antlibs are loaded on project
initialization (or on demand).  But I'm not sure I like this automagical
loading.  Something inbetween would be this:

<project>
   <.. init properies .../>
   <use resource="${ant-contrib.jar}" ns="antlib:ant-contrib"/>
   <use resource="${antelope.jar}" ns="antlib:antelope"/>

   <target name="test" xmlns:antcontrib="antlib:ant-contrib"
                       xmlns:antelope="antlib:antelope">
      <antelope:if>
          ....
      </antelope:if>
      <antcontrib:foreach ...>
   </target>

</project>

which is slightly more verbose, but cleaner IMO.  Especially since the
antlib loading is explicit.

--
knut

Reply via email to