# Creating a bundle jar with ant

I"m using Ant to build some Java projects.
In some, I"ve got a lib/ directory, which contains external dependencies, in the form on JAR files.

During the build, I create a bundled jar, that contains the project"s code, alongside the dependencies, by adding to the bundle jar file a zipfileset for each of the jars in the lib/ directory.

The problem is, that every time I add a jar, or change names, I need to remember to update the build.xml file, as I couldn"t find a way for adding those zipfilesets in an automatic manner that will include all jars in a certain pattern (e.g. lib/*.jar).

Is there a better way for doing this?

I"ve considered writing my own Ant Task for this, or using Groovy"s ant API to do this programmatically, but was wondering if there"s a way for doing this using "vanilla" ant.

Thanks!

In my target, I have something like this:

<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip"> <zipgroupfileset dir="dist" includes="*.jar"/> <zipgroupfileset dir="dist/lib" includes="*.jar" excludes=""/> <manifest> <attribute name="Main-Class" value="${main.class}"/>

<attribute name="Class-Path" value="${mf.classpath}"/> </manifest> </jar> And here is how I build my classpath: <path id="build.classpath"> <fileset dir="${basedir}/">

<include name="${lib.dir}/*.jar"/> </fileset> </path> <pathconvert property="mf.classpath" pathsep=" "> <path refid="build.classpath"/> <mapper> <chainedmapper> <flattenmapper/> <globmapper from="*.jar" to="lib/*.jar"/> </chainedmapper> </mapper> </pathconvert> mf.classpath is used from the package target posted above. This part I copied from somewhere else, so I'm not all that familiar with it. Quick edit. Javac needs to know about those jars too. <path id="jars"> <fileset dir="${lib.dir}" includes="**/*.jar"/>

</path>

<target name="compile">

<mkdir dir="${build.dir}"/> <javac srcdir="${src.dir}" destdir="\${build.dir}" classpathref="jars" debug="on"/>

</target>