On Nov 14, 2007 3:18 PM, Dominique Devienne <[EMAIL PROTECTED]> wrote:
> On Nov 14, 2007 8:07 AM, Wolfgang Häfelinger <[EMAIL PROTECTED]> wrote:
> > * Simple fix...place all third-party jars in $ANT_HOME/lib
> >
> > Honestly, putting something into Ant's  lib directory is really ugly and all
> > those alternatives ($HOME/.ant etc) do not solve the overall problem.
>
> If the project you checkout includes its own Ant extensions, and you
> want to use a stock Ant release, you still have the option of using
> the -lib command line switch to tell the Ant launcher to use your
> custom libs. Using -lib is just as effective as putting the jars in
> $ANT_HOME/lib I believe. Then you only need a little wrapper
> build.bat/.sh script (checked in) to launch Ant properly configured
> for the projects.

I would argue that using -lib is nearly as ugly as placing jars in $ANT_HOME/lib
(but not as bad!!)

On projects at work,  that I am involved in, I insist on
using "clean room" ant 1.7.0 and "clean room" java 1.5.* (or higher).

For each antlib / extension that is needed, I have an ant file that
sets up the extension for-example ant-contrib.

<project name="ant-contrib.setup">
  <typedef uri="antlib:net.sf.antcontrib"
           resource="net/sf/antcontrib/antlib.xml">
    <classpath>
      <fileset dir="${commons.dir}/lib/ant/ant-contrib" includes="*.jar"/>
    </classpath>
  </typedef>
</project>

These setup files are called from a setup.xml:
<project name="ant.setup">

  <!-- allow developer override of properties -->
  <property file="override.properties"/>

  <property name="java.ver" value="1.5"/>

  <property environment="env"/>
  <dirname property="ant.setup.dir" file="${ant.file.ant.setup}"/>

  <property name="commons.dir"
            location="${ant.setup.dir}/../.."/>
  <property name="top.dir"
            location="${commons.dir}/.."/>

  <property name="dist.dir"
            location="${top.dir}/build/dist"/>

  <property name="main.java" location="src/main/java"/>
  <property name="test.java" location="src/test/java"/>

  <import file="ant-classloader.xml"/>
  <import file="ant-contrib.xml"/>
  <import file="log4j.xml"/>
  <import file="beanshell.xml"/>
  <import file="macros.xml"/>
  <import file="cobertura.xml"/>
  <import file="checkstyle.xml"/>
  <import file="javadoc.xml"/>
  <import file="axis.xml"/>
  <import file="targets.xml"/>
  <import file="findbugs.xml"/>
  <import file="pmd.xml"/>
  <import file="jaxb.xml"/>
</project>


Where necessary I use the {antlib:net.jtools.classloadertask}classloader task
(http://enitsys.sourceforge.net/ant-classloadertask/) to
shovel jars into the project classloader - necessary for example to
use beanshell
with bsf on ant 1.7.0.  I also found in necessary to use it to avoid
classloading issues
with coverage tools on axis tasks.

<project name="beanshell"
         xmlns:cl="antlib:net.jtools.classloadertask"
         xmlns:ac="antlib:net.sf.antcontrib">

  <!-- Enable beanshell
       With ant 1.7.0 the only way to do this
       within a project is to use cl:classloader
    -->
  <cl:classloader loader="project">
    <classpath>
      <fileset dir="${commons.dir}/lib/main/commons-logging"  includes="*.jar"/>
      <fileset dir="${commons.dir}/lib/ant/bsf" includes="*.jar"/>
      <fileset dir="${commons.dir}/lib/ant/beanshell" includes="*.jar"/>
    </classpath>
  </cl:classloader>
</project>

Peter

>
> Sure, auto-download of dependencies would be nice, and with Ivy part
> of the Ant family, it may come sooner rather than later, but in the
> mean time, -lib is a very effective and easy way to work around your
> issue it sounds like. --DD
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to