Ant - Einführung

Aus Wiklet

Wechseln zu: Navigation, Suche

[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

mail

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.