Targets, Tasks and Tags

Einstieg
Struktur eines "build-files"
Standard Targets
Target Verknüpfung

Einstieg

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.

Struktur eines "build-files"

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 firstTarget
              
fü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.

Standard Targets

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:

  • init
  • compile
  • archive/dist
  • deploy
  • clean

Target Verknüpfung

Target - Vorbedingung

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.

Target - Aufruf

Möchte man aus einem Target einen anderes Target innerhalb derselben build-Datei aufrufen kann man den Ant-Task antcall verwenden.

<antcall target="theTarget"/>