home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

Projektautomatisierung mit ANT, Wozu?

Die Motivation für den Erfinder von ANT war ursprünglich, dass Build-Tools wie "make" etc. jeweils nur auf einer Plattform funktionieren. Andere Build-Tools lassen sich einfach für dieses eine Betriebssystem erweitern, jedoch beschränkt man sich damit auch wieder nur auf eine Plattform.

Darüber hinaus störte den Erfinder die unkomfortable "Nur-Text-Quelldatei" bei der bereits ein Leerzeichen oder TAB zu viel, die Build-Datei unbrauchbar machte.

ANT ist anders als diese Tools, denn es erbt von Java-Klassen und die Konfigurationsdateien sind in XML verfasst. Somit lässt es sich nicht so einfach durch Betriebssystem-Kommandos wie "find" (bei Linux) etc. erweitern, dafür läuft es aber auch auf mehreren Plattformen.

Ein weiterer Vorteil von ANT ist, dass es sich als Plugin in die Eclipse IDE einbinden lässt.

Die Elemente einer ANT-Konfigurationsdatei

Wie bereits erwähnt handelt es sich bei der ANT-Konfigurationsdatei um eine XML-Datei.

Deshalb beginnt sie zunächst mit dem XML-Versionstag:

 

<?xml version="1.0"?>

 

Anschliessend folgt das obligatorische Wurzelelement. In diesem Fall ein Project-Element. Für diesen kann ein Name und ein Wurzelverzeichnis angegeben werden (basedir). Darüber hinaus braucht ein Project ein default-Attribut, welches definiert, mit welchem "target"-Element begonnen werden soll.

 

<project name="test" default="compile" basedir=".">

 

Anschliessend folgen die property-Tags. Diese übernehme die Funktion von Variablen. Es besitzt einen Namen und einen Wert. Möchte man in dem ANT-Skript auf die Variable zugreifen, so tut man dies mit : ${propertyname}

 

 <property name="src" value="."/> 3
 <property name="build" value="build"/>

 

Dann folgen die eigentlichen Aufgaben eines ANT-Skripts. Die Target-Elemente. Diese enthalten die Attribute name und depends. Mit depends wird die Ausführreihenfolge der Target-Elemente angegeben. Mit 

 

<target name="compile" depends="init">

 

gibt man z. Bsp an, dass vor der Ausführung von compile zuerst init ausgeführt werden muss.

Im Target-Element steht nun z. Bsp. die Ausführung der Komplierung (javac) oder die Erzeugung eines Verzeichnis (mkdir). Eine komplette Liste der möglichen ANT-Befehle (Tasks) erhält man im Apache-Ant-Manual. http://ant.apache.org/manual/index.html

 

<mkdir dir="${build}"/>

 

 

<javac srcdir="${src}" destdir="${build}"/> 

 

Das komplette ANT-Skript im Überblick:

 

<?xml version="1.0"?> 1
<project name="test" default="compile" basedir="."> 2

     <property name="src" value="."/> 3
     <property name="build" value="build"/>

     <target name="init">  4
          <mkdir dir="${build}"/>
     </target>

     <target name="compile" depends="init"> 5
          <!-- Compile the java code -->
         
          <javac srcdir="${src}" destdir="${build}"/>
     </target>
</project>