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:

  1. <?xml version="1.0"?>
  2. <project
  3.    name="hudson_build"
  4.    basedir="."
  5.    default="build"
  6.    xmlns:ant4eclipse="antlib:org.ant4eclipse">
  7. <property
  8.       name="workspaceDirectory"
  9.       value="${basedir}/.." />
  10.  
  11.    <!-- define ant4eclipse tasks -->
  12.    <taskdef
  13.       uri="antlib:org.ant4eclipse"
  14.       resource="org/ant4eclipse/antlib.xml" />
  15.  
  16.    <!-- import the ant4eclipse platform macros -->
  17.    <import
  18.       file="${basedir}/hudson/ant4eclipse/macros/a4e-platform-macros.xml" />
  19.  
  20.    <!-- import the ant4eclipse jdt macros -->
  21.    <import
  22.       file="${basedir}/hudson/ant4eclipse/macros/a4e-jdt-macros.xml" />
  23.  
  24.    <target
  25.       name="build">
  26.       <ant4eclipse:getJdtClassPath
  27.          property="classpath"
  28.          pathId="classpathref"
  29.          workspaceDirectory="${workspaceDirectory}"
  30.          projectName="ch.javablog.myproject" />
  31.  
  32.       <!-- classes folder -->
  33.       <delete
  34.          failonerror="false">
  35.          <fileset
  36.             dir="classes" />
  37.       </delete>
  38.  
  39.       <mkdir
  40.          dir="classes" />
  41.  
  42.       <javac
  43.          srcdir="src"
  44.          destdir="classes"
  45.          classpathref="classpathref"
  46.          target="1.1" />
  47.    </target>
  48. </project>

Praktisch.

Bookmark and Share

Leave a Reply