CW-Leser testen: Die fleißige Ameise Ant

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.
Für Java-Entwickler zählt das Build-Tool zu den Klassikern.

Ursprünglich wurde die Open-Source-Software Ant ("Another Neat Tool") als Ersatz für das Werkzeug "make" entwickelt, um die Entwicklung des Web-Servers Apache Tomcat zu vereinfachen. Mittlerweile ist Ant ein Klassiker, hat eine Reihe von Java-Entwicklungs-Tools hinter sich gelassen und bildet in vielen Java-Projekten die Basis für den Build-Vorgang.

Fazit

Ant ist ein plattformunabhängiges und flexibles Open-Source-Tool für Entwicklungs- oder Administrationsaufgaben. Im Bereich Enterprise-Build-Management gibt es jedoch inzwischen spezialisierte Alternativen.

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 zahlreiche Dateiformate und Archive.

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 testgetriebenen 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 nebenstehende 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.

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 auf die Verwendung der Software.

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.

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 auch alte Java-Versionen unterstützt. (fn)