CW-Leser testen: Open-Source-Tool Ant hilft Java-, PHP- und .NET-Entwicklern

06.09.2007
Frank Pientka arbeitet als Principal Software Architect bei der MATERNA GmbH. Als Software Architect sorgt er für mehr Qualität in der Software und kümmert sich, als Gründungsmitglied des iSAQB, um eine verbesserte Ausbildung und Zertifizierung von Architekten.
Seit mehr als zwei Jahrzehnten unterstützt er Firmen bei der Umsetzung  und Modernisierung ihrer Software-Architekturen. Dabei führt er externe Reviews und Architekturbewertungen als Gutachter durch.
Dazu hat er auch schon mehrere Bücher, Fachartikel veröffentlicht und Vorträge gehalten.
Ursprünglich wurde die Open-Source-Software Ant als Ersatz für das Werkzeug "make" entwickelt, um die Entwicklung des Web-Servers Apache Tomcat zu vereinfachen. Mittlerweile ist Ant ein Klassiker und hat eine Reihe von Java-Entwicklungs-Tools hinter sich gelassen.

Das Tool Ant ("Another Neat Tool") bildet in vielen Java-Projekten die Basis für den Build-Vorgang. Zu den Stärken der in Java implementierten Software zählt, Anwender bei wiederkehrenden Entwicklungsaufgaben zu unterstützen. Ergänzt werden die Basisfunktionen durch zahlreiche Erweiterungen. Zudem wurde das Programm in Entwicklungsumgebungen wie Eclipse und Netbeans integriert. Darüber hinaus lässt sich Ant mit anderen Programmiersprachen wie Perl und Python nutzen, und zwar über Wrapper-Skripte. Mit "Nant" existiert ein Ableger für Microsoft .NET. Und "Phing" ist eine auf Ant basierende Project Build Software für PHP.

Arbeitsweise

Das zentrale Element ist die Datei build.xml, in der die Umgebungsvariablen (Properties, Pfade) und die einzelnen Aufgaben (Tasks) definiert sind. Eine Build-Datei besteht aus einem Projekt und mindestens einer Aufgabe, die in einem Ziel (Target) zusammengefasst ist. Zwischen Zielen lassen sich Abhängigkeiten definieren, wodurch die Aufrufreihenfolge festgelegt wird. Tasks sind als Java-Klassen implementiert. Targets werden in XML definiert und rufen Tasks auf. Es können auch eigene Tasks in Form von Java-Klassen erstellt werden. Sollte man bei den über 100 mit Ant vorhandenen Tasks nicht fündig werden, so gibt es entweder die Möglichkeit, eine eigene Task zu schreiben, oder sich einer externen Task aus dem Internet zu bedienen.

Im empfehlenswerten Ant-Handbuch sind die einzelnen Tasks zu Themengruppen (Archivierung, Übersetzung, Deployment, Dateiverarbeitung, Versionskontrolle, Testen etc.) zusammengefasst und beschrieben. Hier kommen auch reguläre Ausdrücke wie Fileset und Filelist zur Sprache, die dabei helfen, Dateien und Verzeichnisse zu bearbeiten.

Ant verarbeitet Dateiformate wie Ascii, Unicode, HTML, XML, XSL und Archive. Besonders fällt hier auf, dass zahlreiche Archivformate unterstützt werden: G/ZIP, TAR, W/E/JAR, CAB und RPM. Ein verteiltes und plattformunabhängiges Arbeiten erlauben zudem die von Ant nutzbaren Kommunikationsprotokolle wie JDBC, FTP, SCP, Telnet, http und SMTP.

Neben den einfachen Entwicklungsschritten wie Übersetzen, Aufrufen und Testen geht Ant dem Nutzer auch dabei zur Hand, Software zu installieren und zu dokumentieren. Schon seit einiger Zeit verwenden Firmen das Tool deshalb bei der Test-getriebenen Entwicklung mit JUnit und setzen es zur Qualitätssicherung ein.

Automatisiert werden können mit Ant administrative Aufgaben, beispielsweise das Software Deployment auf Applikations-Server. Um Anfängerfehler zu vermeiden, empfiehlt es sich, die Tipps und Tricks aus dem mit Ant ausgeliefertem Dokument "Ant in Anger" zu berücksichtigen.

Der folgende Ausschnitt aus einer Build-Datei für das Projekt MyProject zeigt zwei Targets: Das Target compile erzeugt ein Verzeichnis und kompiliert eine Menge von Java-Klassen dort hinein. Es hängt von einem anderen Target clean ab, das zuvor ein Verzeichnis und die darin enthaltenen Dateien löscht, um Überbleibsel früherer Aufrufe zu beseitigen.

Skriptbeispiel für Ant.
Skriptbeispiel für Ant.

Um Ant zu verwenden, müssen eine Java-Entwicklungsumgebung installiert und folgende Umgebungsvariablen für Windows gesetzt sein:

set ANT_HOME=c:\ant

set JAVA_HOME=c:\jdk-1.6.0

set PATH=%PATH%;%ANT_HOME%\bin

Dann kann Ant auf der Kommandozeile mit ant -f build.xml aufgerufen werden. Liegt die Build-Datei mit dem Namen build.xml im Aufrufverzeichnis, so reicht auch der Aufruf von Ant. Um sich alle Aufrufoptionen oder Informationen zur Build-Datei anzeigen zu lassen, kann der Benutzer Ant mit -h oder -p aufrufen.

Möchte man gezielt ein Target (zum Beispiel compile) aufrufen, lässt sich das für unser Beispiel auch direkt angeben mit ant compile.

Dokumentation der Ant-Dateien

Wer Ant nutzt, sollte Wert auf die Dokumentation legen. Es empfiehlt sich, von XML-Kommentaren und dem Description-Element regen Gebrauch zu machen. Diese Informationen liefern Hinweise für die Verwendung des Projekts.

Da trotz Modularisierung große Ant-Projekte recht unübersichtlich werden können, gibt es mehrere kostenlose Zusatzwerkzeuge, die helfen, die Arbeit zu dokumentieren. Besonders nützlich ist Grand (Graphical Representation of Ant Dependencies), das eine Ant-Projektdatei mit seinen Targets und Abhängigkeiten

grafisch anzeigt. Dabei verwendet es die Graphviz-Bibliothek von AT & T. Es kann mit grafischer Oberfläche oder auch als Ant-Task aufgerufen werden. In der Abbildung ist die Build-Datei von Tomcat grafisch dargestellt. Über deren rund 700 Zeilen umfassende Struktur bietet eine grafische Darstellung einen schnellen Überblick.

Licht und Schatten

Zu den weniger positiven Eigenschaften zählt die Fehlersuche, denn die gestaltet sich mit Ant mühsam. Da Standards fehlen, kann es schwierig werden, Ant-Projekte zu warten sowie anzupassen. Für die Erstellung eines einheitlichen und stabilen Build-Prozesses ist Ant mit "Maven" eine starke Konkurrenz innerhalb der Apache-Community entstanden. Um die Abhängigkeiten der Bibliotheken zu verwalten, bietet sich die Ant-Erweiterung Ivy an, die mit mehreren Software-Repositories, darunter auch das von Maven, zusammenarbeiten kann. Dennoch dürfte es Ant noch lange geben, da die Software weiterentwickelt wird und sie auch alte Java-Versionen unterstützt.

Fazit

Ant ist ein plattformunabhängiges und flexibles Open-Source-Tool für Entwicklungs- oder Administrationsaufgaben. Es lässt sich leicht erweitern. In der Java-Entwicklung mit Open-Source-Produkten kommt keiner an "der fleißigen Ameise" vorbei, da viele Projekte darauf basieren. Im Bereich Enterprise-Build-Management gibt es jedoch inzwischen spezialisierte Alternativen. (fn)