home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

ANT-Skript

Das folgende ANT-Skript ist ein typisches und kann als Ausgangspunkt für eigene Projekte dienen. Es zeigt auch, wie man eigene Tasks einbinden kann.

<project name="Super Projekt" default="junitreport" basedir=".">
<description>
Hier eine lange Projektbeschreibung (optional)
</description>
<!-- Definition der "Variablen, konkret der Pfade. Für ${x} wird der Wert der entsprechenden Variable x eingesetzt -->
<property name="build.dir" location="build"> </property>
<property name="build.classes.dir" location="${build.dir}/classes"> </property>
<property name="build.testclasses.dir" location="${build.dir}/test"> </property>
<property name="doc.dir" location="doc"> </property>
<property name="index.dir" location="index"> </property>
<property name="src.dir" location="src"> </property>
<property name="test.dir" location="test"> </property>
<property name="junitreport.home.dir" location="junitreport"> </property>
<property name="junitreport.html.dir" location="${junitreport.home.dir}/html"> </property>
<property name="junitreport.xml.dir" location="${junitreport.home.dir}/xml"> </property>
<property name="lib.dir" location="lib"> </property>
<!-- Definition des Classpath. Dieser ist unabhängig von dem von Eclipse! -->
<path id="project.classpath">
<pathelement location="${build.classes.dir}"> </pathelement>
<pathelement location="${build.testclasses.dir}"> </pathelement>
<pathelement location="C:\Programme\eclipse3.2\plugins\org.junit_3.8.2.v200706111738\junit.jar"> </pathelement>
<fileset dir="${lib.dir}">
<include name="*.jar"> </include>
</fileset>
</path>
<!-- Löschen der Verzeichnisse (mit deldir) -->
<target name="clean">
<deldir dir="${build.classes.dir}"> </deldir>
<deldir dir="${build.testclasses.dir}"> </deldir>
<deldir dir="${junitreport.html.dir}"> </deldir>
<deldir dir="${junitreport.xml.dir}"> </deldir>
</target>
<!-- Anlegen der Verzeichnisse -->
<target name="prepare">
<mkdir dir="${build.classes.dir}"> </mkdir>
<mkdir dir="${build.testclasses.dir}"> </mkdir>
<mkdir dir="${junitreport.html.dir}"> </mkdir>
<mkdir dir="${junitreport.xml.dir}"> </mkdir>
<mkdir dir="${doc.dir}"> </mkdir>
</target>
<!-- Kompilieren aller Dateien in Verzeichnis srcdir in Verzeichnis destdir wobei der oben definierte Classpath verwendet wird. mit depends wird zum Ausdruck gebracht, dass zuerst das angegebene Target (hier prepare) ausgeführt wird. Es ist mögliche mehrere Targets bei depends anzugeben (durch Komma getrennt) -->
<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.classes.dir}">
<classpath refid="project.classpath">
</classpath>
</javac>
</target>
<!-- Kompilieren aller Unittests -->
<target name="compile-test" depends="compile">
<javac srcdir="${test.dir}" destdir="${build.testclasses.dir}">
<classpath refid="project.classpath">
</classpath>
</javac>
</target>
<!-- Ausführen aller Unittests -->
<target name="test" depends="compile-test">
<junit haltonfailure="true">
<classpath refid="project.classpath"> </classpath>
<formatter type="xml"> </formatter>
<batchtest fork="yes" todir="${junitreport.xml.dir}">
<fileset dir="${build.testclasses.dir}" includes="**/*Test.class"> </fileset>
</batchtest>
</junit>
</target>
<!-- Erstellen des JUnitReports (Ergebnisse der Tests in HTML-Format) -->
<target name="junitreport" depends="test">
<junitreport todir="${junitreport.html.dir}">
<fileset dir="${junitreport.xml.dir}">
<include name="*.xml"> </include>
</fileset>
<report format="frames" todir="${junitreport.html.dir}"> </report>
</junitreport>
</target>
<!-- Erzeugen der JavaDocs (HTML-Seiten) -->
<target name="javadoc" depends="junitreport">
<javadoc destdir="${doc.dir}" sourcepath="${src.dir}" windowtitle="HTWG Testergebnisse">
</javadoc>
</target>
<!-- Packen der Class-Files in eine jar-Datei -->
<target name="jar">
<jar destfile="test.jar" basedir="${build.classes.dir}"> </jar>
</target>
<!-- Hier lassen wir unseren eigenen Task ausführen -->
<target name="use" description="Use the Task" depends="javadoc">
<taskdef name="unsertask" classname="anttask.SimpleTask" classpath="${build.classes.dir}"> </taskdef>
<unsertask message="Servus HTWG" number="42"> </unsertask>
</target>
<!-- Auschecken (käme normalerweise am Anfang) -->
<target name="checkout">
<svn username="guest" password="">
<checkout url="http://subclipse.tigris.org/svn/subclipse/trunk/svnant/" revision="HEAD" destPath="svnant"> </checkout>
</svn>
</target>
</project>

Nützliche Hinweise

Ausführen des Skripts

Falls Sie mit Eclipse arbeiten, können Sie das build-Skript (build.xml) direkt ausführen, in dem Sie es mit der rechten Maustaste anklicken und über "Run as"  --> "ANT Build" bzw. "ANT Build ..." ausführen.

 

ANT Editor

Falls Sie als Dateinamen nicht build.xml wählen, kann es sein, dass sich nicht der passende Editor öffnet. Dann über das Kontextmenü "Open with" --> "Other..."  --> Internal Editors" --> "Ant Editor" wählen.

 

Problembehebung beim Arbeiten mit JUnit

Problem 1 ("Could not find the task…"):
Auszug der Webseite http://docs.codehaus.org/display/GEOSDOC/Ant+-+junit,+build+failed%3D+Could+not+create+task+or+type+of+type+junit
When running JUnit tasks in ant and you get the following error:
BUILD FAILED
path\to\Geoserver\build.xml:259: Could not create task or type of type: junit.
Ant could not find the task or a class this task relies upon.
To fix this problem, you need to copy a JUnit.jar file to your eclipse/plugins/org.apache.ant/lib directory
Next you need to go into Eclipse then click on Window->Preferences->ant->Runtime, then select 'Ant Home Entries (Default). Click on the button 'Add External JARs'. Locate the junit.jar file you copied, select it and hit 'OK'. Hit 'Apply', then 'OK' and try your ant task again. That should fix it.

Problem 2 ("FileNotFoundException junitvmwatcher"):
Falsche Ant-Version. Einfach die 1.7.0 nehmen und aufpassen, dass nicht im lib-Folder des Projektes eine falsche schlummert.

Problem 3 (ANT klagt über fehlende Bibliothek):
Kann an falscher ANT-Version liegen. Dazu run as… Dialog öffnen und ANT Home neu setzen (auf ANT 1.7.0).

 

Mit ANT ohne Eclipse arbeiten

Führen Sie folgende Schritte aus:

 

  • ANT bei Apache Herunterladen: http://ant.apache.org
  • Pfad setzen:

    • Option 1 (Global): Bei Windows auf dem Desktop auf das Kontextmenü von Arbeitsplatz klicken -> Erweitert -> Umgebungsvariablen
    • Option 2 (nur für geöffnetes DOS-Fenster): Im DOS-Fenster

      set PATH=%PATH%;C:\Downloads\eclipse\plugins\org.apache.ant_1.6.5\bin

      eingeben

  • CLASSPATH setzen:

    • Option 1 (Global): analog Pfad
    • Option 2: ebenfalls analog über

      set ANT_HOME=C:\Downloads\eclipse\plugins\org.apache.ant_1.6.5

  • ins Verzeichnis der Build-Datei (build.xml) wechseln:

    cd C:\Dokumente und Einstellungen\DrCJ\workspace\Buildit

  • ant aufrufen