Bauen mit Ant4Eclipse
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.