Vor kurzem habe ich für ein bereits aufgesetztes Blackberry-Projekt einen automatischen Build für Hudson konfiguriert. Wenn Maven im Einsatz ist, ist das normalerweise schnell gemacht, aber bei diesem Projekt war der Einsatz von Maven nicht möglich. Somit bleibt einem nichts anderes übrig, als selbst ein paar Ant-Skripte zu programmieren. Klar, kein Problem. Allerdings wollte ich nicht die ganzen Projektabhängigkeiten im Ant-Skript wiederholen (DRY und so…), sie wurden ja schon im Eclipse-Projekt konfiguriert.
Aber wie bekomme ich die Informationen aus der .classpath-Datei ?
Hier hilft ant4eclipse: Der “getJdtClassPath”-Task extrahiert den Classpath aus dem Eclipse-Projekt und stellt ihn für die weitere Verwendung in ant bereit. Das nachfolgende Beispiel-Skript nutzt den extrahierten Classpath und kompiliert damit die Java-Klassen:
<?xml version="1.0"?>
<project
name="hudson_build"
basedir="."
default="build"
xmlns:ant4eclipse="antlib:org.ant4eclipse">
<property
name="workspaceDirectory"
value="${basedir}/.." />
<!-- define ant4eclipse tasks -->
<taskdef
uri="antlib:org.ant4eclipse"
resource="org/ant4eclipse/antlib.xml" />
<!-- import the ant4eclipse platform macros -->
<import
file="${basedir}/hudson/ant4eclipse/macros/a4e-platform-macros.xml" />
<!-- import the ant4eclipse jdt macros -->
<import
file="${basedir}/hudson/ant4eclipse/macros/a4e-jdt-macros.xml" />
<target
name="build">
<ant4eclipse:getJdtClassPath
property="classpath"
pathId="classpathref"
workspaceDirectory="${workspaceDirectory}"
projectName="ch.javablog.myproject" />
<!-- classes folder -->
<delete
failonerror="false">
<fileset
dir="classes" />
</delete>
<mkdir
dir="classes" />
<javac
srcdir="src"
destdir="classes"
classpathref="classpathref"
target="1.1" />
</target>
</project>
Praktisch.