Bisher wurden nur erste Schritte mit Ant vorgestellt. Ziel war es, die ersten Schritte mit Ant zu unternehmen. Ant wurde installiert, Meldungen ausgegeben und einfache Dateioperationen ausgeführt.
Inhalt dieses Abschnittes ist auf die grundlegende Struktur eines Ant "Build-Files" einzugehen.
Die Ant-Build-Files werden im XML-Format definiert. Demnach wird in der ersten Zeile eines Build-Files ein entsprechender Eintrag angegeben. Gemeinsam jedem Build-File ist ein Root-Element namens "project". Das Grundgerüst eines Build-Files hat also die folgende Form:
<?xml version="1.0" ?> <project> </project>
Innerhalb des Root-Elements "project" enthält ein Build-File in der Regel ein odere mehrere Targets, welche durch Ihr "name"-Attribute eindeutig gekennzeichnet werden. Innerhalb dieser Targets werden die Tasks angegeben, die ihrerseits wiederum Tags enthalten können.
Für einen ersten Eindruck der Verwendung von Targets soll folgendes Build-File betrachtet werden:
<?xml version="1.0" ?> <project> <target name="firstTarget"> <echo>>My first target</echo> </target> <target name="secondTarget"> <echo>My second target</echo> </target> <echo>No target</echo> </project>
Wird das Build-File von der Kommandozeile aus ohne Parameter aufgerufen erhalten wir die Ausgabe:
Buildfile: build.xml [echo] No target BUILD SUCCESSFUL Total time: 0 seconds
Um nun die Tasks eines Tasks auszuführen, geben wir Ant als Parameter den Namen des auszuführenden Targets mit. Die Anweisung
ant firstTargetführt zum Ergebnis
Buildfile: build.xml [echo] No target firstTarget: [echo] >My first target BUILD SUCCESSFUL Total time: 0 seconds
Die Anweisung
ant secondTasrget
führt zum Ergebnis
Buildfile: build.xml [echo] No target secondTarget: [echo] My second target BUILD SUCCESSFUL Total time: 0 seconds
Und letztlich führt die Anweisung
ant secondTarget firstTarget
zum Ergebnis
Buildfile: build.xml [echo] No target secondTarget: [echo] My second target firstTarget: [echo] >My first target BUILD SUCCESSFUL Total time: 0 seconds
Durch die Definition eines Targets kann festgelegt werden welcher Teil / welche Teile des Build-Files verarbeitet werden sollen. Befinden sich Tasks außerhalb eines Targets, werden diese vor der Ausführung des Targets ausgeführt (bzw. werden als einzige Tasks ausgeführt). Die Ausführung dieser Tasks lässt sich nicht abschalten.
Für immer wieder auftretende Aufgaben haben sich Standard Targets als Konvention für Ant-build-files etabliert. Nachfolgend eine Liste mit Standard Target Namen:
Mithilfe des depends
-Attributs eines Targets
kann festgelegt werden, welche Targets vor der Ausführung abgearbeitet werden müssen.
Ein Beispiel, wo dies sinnvoll sein kann ist, wenn ein Projekt
übersetzt werden soll. Möchte man zuvor das Ausgabeverzeichnis
bereinigen, kann man dies durch entsprechende Target-Verknüpfung erreichen.
Im nachfolgenden Beispiel ist festgelegt, dass bevor "target4" abgearbeitet wird, "target1" abgearbeitet werden muss. Weiterhin muss, bevor "target1" abgearbeitet wird, "target3;" abgearbeitet werden.
<project name="Build-KO3" basedir="."> <target name="target1" depends="target3"> <echo>target1</echo> </target> <target name="target2"> <echo>target2</echo> </target> <target name="target3"> <echo>target3</echo> </target> <target name="target4" depends="target1"> <echo>target4</echo> </target> </project>
Rufen wir das Beispiel mit dem Befehl ant target4
auf erhalten
wir folgende Ausgabe:
Buildfile: build.xml target3: [echo] target3 target1: [echo] target1 target4: [echo] target4 BUILD SUCCESSFUL Total time: 0 seconds
Hängt ein Target von mehreren anderen Targets ab, werden diese
im depends
-Attribut durch ein Komma getrennt angegeben.
Möchte man aus einem Target einen anderes Target innerhalb derselben build-Datei
aufrufen kann man den Ant-Task antcall
verwenden.
<antcall target="theTarget"/>