Quelques variables:
<property name="sourcedir" value="${basedir}/src"/>
<property name="targetdir" value="${basedir}/bin"/>
<property name="librarydir" value="${basedir}/lib"/>
<property name="action" value="list"/>
Il faut utiliser toutes les librairies .jar du répertoire "lib" dans le classpath:
<path id="libraries">
<fileset dir="${librarydir}">
<include name="*.jar"/>
</fileset>
</path>
fileset: permet de définir un ensemble de fichiers.
Première "cible", on fait le ménage dans le répertoire "bin":
<target name="clean">
<delete dir="${targetdir}"/>
<mkdir dir="${targetdir}"/>
</target>
Copie dans le répertoire "bin" de tous les fichiers autres que ".java" (ex: fichiers de configuration et de mapping hibernate...):
<target name="copy-resources">
<copy todir="${targetdir}">
<fileset dir="${sourcedir}">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
On lance la compilation:
<target name="compile" depends="clean, copy-resources">
<javac srcdir="${sourcedir}" destdir="${targetdir}"
classpathref="libraries"/>
</target>
On lance le programme compilé en y passant un paramètre:
<target name="run" depends="compile">
<java fork="true" classname="org.events.EventManager"
classpathref="libraries">
<classpath path="${targetdir}"/>
<arg value="${action}"/>
</java>
</target>
fork: permet l'exécution de la tâche dans une autre VM.
classpathref: le classpath à utiliser.
classname: la classe java à exécuter.
arg: argument à passer en ligne de commande lors de l'exécution.