Freie Universität Berlin · Institut für Informatik
Softwarepraktikum · SoSe 2002
Dozent: Ulrich Kortenkamp

Marc Georgi und Jürgen Schütz · 08. Mai 2002

Ant - ein Buildtool

1 Was ist Ant?

Ant ist ein Buildtool, also ein Tool, daß aus dem Quellcode ein fertiges Programm macht. Es ermöglicht, alles was mit dem Übersetzen des Quellcodes zusammen hängt, d.h. dokumentieren, kopieren, löschen, die Verwendung von CVS, u.s.w., mit einem Aufruf von Ant zu erledigen, und dann bei neueren Versionen immer wieder auf die gleiche Art und Weise zu wiederholen.

2 Aufruf von Ant

Zum Verwenden von Ant benötigt man eine XML-Datei, in der steht, was Ant machen soll, das sogenannte Buildfile (siehe Abschnitt 3).
Zum Aufruf von Ant, gibt man einfach ant auf der Kommandozeile ein. Als Buildfile wird dann die Datei build.xml verwendet. Will man ein anderes Buildfile verwenden, ruft man Ant mit ant -buildfile Name.xml auf.

3 Buildfiles

3.1 Projects

Jedes Buildfile besteht aus genau einem Project. Es beginnt mit der Zeile

   <project name="Name" default="Targetname" basedir="Verzeichnis">

und endet mit </project>. Dabei ist Name der Name des Projects, Targetname der Name des Defaulttargets (siehe Abschnitt 3.2) und Verzeichnis der Name des Verzeichnisses, von dem sämtliche Pfadberechnungen ausgehen. Innerhalb des Projects steht, was Ant machen soll.

3.2 Targets

Targets sind sinnvolle Zusammenfassungen von Dingen, die Ant machen soll, also z.B. das Löschen und Erstellen von Verzeichnissen, Übersetzen oder Ausführen. Sie beginnen mit

   <target name="Name"> oder <target name="Name" depends="Targetnamen">

und enden mit </target>. Dabei ist Name der Name des Targets und Targetnamen eine Liste von Targets (durch Kommas getrennt) die vorher ausgeführt werden sollen. Beim Aufruf von Ant kann angegeben werden, welche Targets ausgeführt werden sollen. Z.B. wird beim Aufruf ant run das Target namens run ausgeführt. Wird beim Aufruf von Ant kein Target angegeben, wird das Defaulttarget abgearbeitet.

3.3 Tasks

Tasks sind die Bestandteile von Targets, in denen nun endlich etwas passiert. Sie haben (meistens) die Form

   <Name Attribut1="Wert1" Attribut2}="Wert2" ... />.

Einige wichtige Tasks sind in Tabelle 1 aufgeführt. Deren Attribute, falls nicht schon im Beispiel im Abschnitt 3.6 ersichtlich, sowie viele weitere Tasks findet man unter [1, Ant Tasks].

NameBeschreibung
Ant Used to execute another ant process from within the current one.
Copydir Used to copy an entire directory.
Copyfile Used to copy a single file.
Cvs Handles packages/modules retrieved from a CVS repository.
Delete Deletes either a single file or all files in a specified directory and its sub-directories.
Deltree Deletes a directory with all its files and subdirectories.
Exec Executes a system command. When the os attribute is specified, then the command is only executed when Ant is run on one of the specified operating systems.
Get Gets a file from an URL.
Jar Jars a set of files.
Java Executes a Java class within the running (Ant) VM or forks another VM if specified.
Javac Compiles a source tree within the running (Ant) VM.
Javadoc/ Javadoc2 Generates code documentation using the javadoc tool.
Mkdir Makes a directory.
Property Sets a property (by name and value), or set of properties (from file or resource) in the project.
Rmic Runs the rmic compiler for a certain class.
Tstamp Sets the DSTAMP, TSTAMP, and TODAY properties in the current project.
Style Processes a set of documents via XSLT.
Tabelle 1: Wichtige Tasks (Quelle: [2])

3.4 Properties

Eigene Properties erstellt man mit

   <property name="Name" value="Wert"/>.

Desweiteren stellt Ant einige eigene Properties zur Verfügung (siehe [1]). Außerdem gibt es die Möglichkeit, auf Systemproperties zuzugreifen (siehe Javadoc von System.getProperties).

Um nun den Wert einer Property zu erhalten, schließe man deren Name in "${" und "}" ein. Z.B. ist also ${os.name} nichts anderes als der Name des Betriebsystems.

3.5 Kommentare

Kommentare sind auch hier wichtig. Sie haben die folgende Gestalt

   <!-- Kommentar -->.

3.6 Beispiel

Falls das jetzt etwas verwirrend war, kommt jetzt noch ein Beispiel, wo man sicher einiges wiederfindet.

<project name="hello" default="run" basedir="/home/robinson/emailer/schuetz">

<!-- setze properties und tstamp -->
<target name="init">
<tstamp/>
<property name="srcDir" value="test/src"/>
<property name="classDir" value="test/classes"/>
</target>

<!-- loesche die Ergebnisse alter Ant-Aufrufe -->
<target name="clean" depends="init">
<delete dir="${classDir}"/>
<mkdir dir="${classDir}"/>
</target>

<!-- uebersetze -->
<target name="compile" depends="clean">
<javac srcdir="${srcDir}" destdir="${classDir}"/>
</target>

<!-- ausfuehren -->
<target name="run" depends="compile">
<java classname="Hello">
<classpath path="${classDir}"/>
</java>
</target>

</project>

4 Literatur

[1] Apache Software Foundation: Apache Ant 1.5 Manual

[2] Cymerman, Michael: Automate your build process using Java and Ant






Letzte Änderung vorgenommen am Saturday, 26-Oct-2002 16:40:32 CEST
Martin Hense: hense@inf.fu-berlin.de

Valid HTML 4.0!