Ant - Einführung
Aus Wiklet
[Bearbeiten] Definition
ANT wird von der Apache Foundation entwickelt und kann als Java-Alternative für make angesehen werden. (make ist das Buildtool für C-Programme). ANT selbst ist wie Java plattformunabhängig und bietet sich dadurch besondern für den Gebrauch im Zusammenhang mit Java an. Um die Plattformunabhängigkeit komplett zu machen ist die Steuerdatei eine einfache Textdatei im XML-Format.
[Bearbeiten] Das Build-File
Die XML-Datei, standardmäßig ?build.xml? genannt, besteht aus drei Hauptbestandteilen:
project:
ist das Wurzelelement des XML-Files
properties:
spezifiziert eine Variable mit der der Buildvorgang gesteuert werden kann. Zum Beispiel kann man hier Source- und Bin-Verzeichnis des Projeks festlegen, damit man im Falle einer Änderung nicht das komplette Buildfile umkrempeln muss.
target:
beschreibt einen Teil des Buildprozesses (die Kompilierung, das Erstellen des Jar-Files, etc)
<project name="Projekt-Name" default="Run" basedir="."> <property name="binDir" location="bin" /> <property name="srcDir" location="src" /> <property name=?mainClass? value=?mein.package.MainClass? /> <target name="Compile"> <javac srcdir="${srcDir}" destdir="${binDir}" /> </target><br><br> <target name="Run" depends="Compile"><br> <java classname=?${mainClass}? /><br> </target><br> </project>
Das ist ein sehr einfaches Beispiel eines Build-Files. Im project-Tag wird der Name des Projektes, das Default-Target und das Basisverzeichnis spezifiziert. Anschließend werden zwei Verzeichnisse in Variablen gespeichert, die später im Compile- und Run-Vorgang benutzt werden. Als Default-Target ist hier Run angegeben, allerdings sollte ein Programm ja nur dann ausgeführt werden, wenn es erfolgreich kompiliert wurde. Um das zu gewährleisten dient die Eigentschaft ?depends? im Target ?Run?. Es bewirkt, dass Run nur nach erfolgreichem Abschluss von Compile ausgeführt wird.
|
Command |
Beschreibung |
|
ant |
Ruft ein anderes Buildfile auf |
|
antcall |
Ruft ein Target auf |
|
record |
Erzeugt ein Ablaufprotokoll |
|
sleep |
Hält den Ablauf an |
|
echo |
Ausgabe einer Message |
|
copy |
Kopiert Datei oder Verzeichnis |
|
delete |
Löscht Datei oder Verzeichnis |
|
mkdir |
Erstelle ein Verzeichnis |
|
move |
Verschiebt eine Datei |
|
chmod |
Ändert Zugriffsrechte |
|
exec |
Führt ein Systemkommando aus |
|
filter |
Steuert Zeichenersetzung in Dateien |
|
replace |
Ersetzt Zeichen in einer Datei |
|
fixcrlf |
Passt die Zeilenendekonventionen einer Datei an das OS an |
|
|
Sendet eine E-Mail |
|
property |
Definiert eine Variable |
|
java |
Startet eine Klasse |
|
javac |
Kompiliert eine Klasse |
|
javadoc |
Erzeugt eine Dokumentation |
|
signjar |
Signiert eine Jar Datei |
|
jar |
Erzeugt eine Jar Datei |
|
unjar |
Entpackt eine Jar Datei |
|
zip |
Erzeugt eine ZIP-Datei |
|
unzip |
Entpackt eine ZIP-Date |
Jedes dieser Kommandos hat weitere Attribute, die gesetzt werden können. So hat z.B. das property-Kommando folgende Attribute:
|
Attribute |
Beschreibung |
|
name |
Der Variablenname |
|
value |
Wertangabe |
|
location |
Pfadangabe |
|
refid |
Referenz auf eine mit id gesetzte Pfadstruktur bzw. Property-Definition |
|
resource |
Ressource einer Property-Datei |
|
file |
Name eine Property-Datei |
|
environment |
Übernahme von Umgebungsvariablen |
|
classpath |
Der Classpath eben |
|
classpathref |
Referenz auf einen Klassenpfad |
Eine umfangreiche Übersicht mit Beispielen gibt es unter http://ant.apache.org/manual/index.html unter Ant-Tasks
ein etwas komplexeres Beispiel:
<project name="Projekt-Name" default="Run" basedir="."> <property name="binDir" location="bin" /> <property name="srcDir" location="src" /> <property name="jarDir" location="jar" /> <property name="jarFile" location="${jarDir}/MeinProjekt.jar" /> <target name="Initialize"> <delete dir="${binDir}" /> <delete dir="${jarDir}" /> <mkdir dir="${binDir}" /> <mkdir dir="${jarDir}" /> </target> <target name="Compile"> <javac srcdir="${srcDir}" destdir="${binDir}"> <classpath> <pathelement location="${libDir}/jar1.jar"/> </classpath> </javac> </target> <target name="BuildJar"> <jar destfile="${jarFile}" baseDir="${binDir}" > <manifest> <attribute name="Main-Class" value="packet1.MainClass" /> <attribute name="Class-Path" value="${libDir}/jar1.jar"/> </manifest> </jar> </target> <target name="Run" depends="Initialize, Compile, BuildJar"> <java jar="${jarFile}" /> </target> <target name="CleanUp" description="CleaUp Process"> <delete dir="${binDir}" /> <mkdir dir="${binDir}" /> </target> </project>
ANT-Script in Eclipse:
Um in Eclipse ein ANT-File zu erzeugen, lässt man einfach ein normales File erstellen und nennt es ?build.xml?. Um die Datei jetzt ein Eclipse auszuführen, lässt man sich die Ant-Ansicht von Eclipse anzeigen, das geht über den Menupunkt Window->Show View->Ant. Zunächst erscheint ein leeres Fenster mit dem Titel ?Ant?. Per Rechtsklick kann man jetzt ein neues Build-File erstellen. Ausgeführt werden kann es indem man es markiert und den ?Play-Button? drückt.

