Ant (another neat tool)

Another

Ant ist ein Build-Tool der Apache Software Foundation, das als Open-Source-Software - derzeit in der Version 1.8.1 - unter dem u.g. Link zur Verfügung steht. Build-Tools werden u.a. für die Vereinfachung der Prozesse zur Compilierung, zur Wartung, zum Testen sowie zur Installation eingesetzt. Das Java-basierte Ant organisiert mit Hilfe einer Konfigurationsdatei insbesondere den Build-Prozess von Java-Projekten, kann plattformunabhängig genutzt werden und verwendet mit der XML-Notation eine allgemeine Form, die Build-Dateien zu generieren.

Bei Ant handelt es sich um ein etabliertes Build-Tool, welches ursprünglich bereits im Jahre 1998 für den Build-Prozess des Tomcat Servers von James Duncan Davidson entwickelt wurde. Der Name "Ant" steht als Abkürzung für "Another Neat Tool" (dt. "noch ein hübsches Werkzeug") oder auch in Analogie zu dem Insekt Ameise (engl. Ant), deren Eigenschaften sinnbildlich für das Tool stehen sollen. Durch die Unabhängigkeit von einer bestimmten Plattform benötigt Ant zur Ausführung in jedem Fall eine aktuelle Java-Laufzeitumgebung (JRE); besser noch ein Java Development Kit (JDK), damit alle Funktionen von Ant genutzt werden können.

Sofern man Ant in die Reihe anderer Build-Management-Tools einordnet, drängt sich zunächst der Vergleich mit GNU-Make auf. Make ist jedoch im Gegensatz zu Ant nicht plattformunabhängig, und benötigt für seine Funktion einige externe Programme aus der Unix-Umgebung. Ebenso wie Ant ist ein weiteres Build-Tool - Maven 2 - vollständig in Java implementiert und ist demzufolge plattformunabhängig. Maven 2 integriert die Konzepte von Ant konsequent, betrachtet aber den Build-Prozess noch wesentlicher abstrakter als Ant, und stellt dazu ein mächtiges Set an zusätzlicher Funktionalität zur Verfügung.

Der Aufgabenbereich von Ant besteht grundlegend in der Spezifizierung von verschiedenen Dateien, um dann auf diese bestimmte Kommandos und/oder Operationen anzuwenden wie beispielsweise den Java-Compiler aufzurufen, Dateien kopieren oder zu installieren wie auch die Erstellung von Archiven. Damit kann Ant eingesetzt werden, um auf Basis des gegebenen Java-Quellcodes letztendlich eine vollständige und installierbare Anwendung zu generieren. Die Konfiguration eines Build-Prozesses wird in einer auf XML basierenden Build-Datei (standardmäßig ist es die Datei build.xml) festlegt.

Aufbau 
     einer Build-Datei in Ant
Aufbau einer Build-Datei in Ant lexikon, kompendium, computer, it, elektronik

Die Abbildung gibt hier zunächst einen groben Überblick über die grundlegenden Elemente des Build-Tools Ant.

Project.

Bei einem project handelt es sich um das umfassende Objekt, welches eine Laufzeitumgebung für Kommandos und Operationen realisiert und durch eine XML-Build-Datei dargestellt wird. Bei einem komplexeren Projekt hat jedes Teilprojekt eine separate Build-Datei.

Target.

Ein target bildet eine Modulierungseinheit von Ant, fasst eine oder mehrere sogenannte Tasks zusammen, und stellt den Container für die eigentlichen Operationen zur Verfügung, die mit den Tasks ausgeführt werden. Zur eindeutigen Identifizierung besitzen Targets einen Namen, mit denen sich dann auch eine Build-Datei übersichtlich strukturieren lässt. Verschiedene Attribute des <target>-Tags wie beispielsweise depends, if und unless realisieren eine Ablaufsteuerung des Targets. Unter Verwendung des Attributes depend können statische Eigenschaften definiert werden. Das Attribut description dokumentiert schließlich die Funktion eines Targets.

Task.

Die eigentlichen ausführbaren Operationen werden Tasks genannt. Dabei stellt Ant bereits eine ganze Reihe von vorgefertigten Tasks wie beispielsweise

  • zum Aufruf einer Build-Datei,
  • Datei-/Verzeichnis-Operationen (Kopieren, Löschen, Verschieben),
  • Operationen im Zusammenhang mit Java,
  • Erstellung von Dokumentationen mit Javadoc,
  • Anwendung von SQL-Statements mittels JDBC,
  • Download von Dateien,
  • Synchronisation von Verzeichnissen,
  • Operationen auf Archiven oder
  • zum Versenden von Emails

zur Verfügung. Sofern eine spezifische Task benötigt wird, kann diese in Form von Java-Klassen programmiert und Ant um diese Task erweitert werden. Allerdings existiert bereits eine erhebliche Anzahl von Task-Paketen.

Property.

Platzhalter für einen Wert oder eine Zeichenkette werden in Ant Properties genannt. Die konkrete Zuweisung kann bei Aufruf der Build-Datei mit entsprechenden Parametern oder direkt in der Build-Datei erfolgen. Properties können ähnlich Variablen in Programmiersprachen genutzt werden, und sie generieren die konkrete Laufzeitumgebung einer Build-Datei. Properties können im Übrigen auch in einer externen Datei gepflegt und dann im eigentlichen Build-Prozess eingelesen werden.

Ant bietet darüber hinaus eine Fülle erweiterter Funktionalitäten. In Zusammenhang mit der Qualitätssicherung von Software sei hier noch das JUnit Testing genannt. Mit der <junit>-Task bietet Ant die Möglichkeit einen oder mehrere JUnit-Test(s) auszuführen. Dabei werden die Testergebnisse zusammengeführt und in einer gewünschten Form präsentiert. Die Task ermöglicht einen Build abzubrechen oder fortzusetzen, wenn ein Test scheitert.

Die Vorteile von Ant machen sich vor allem in der Realisierung von Java-Projekten bemerkbar. Ant ist aber nicht unbedingt das richtige Tool, wenn es sich um die Erstellung von C-/C++-Anwendungen handelt - hier ist Make vorzuziehen. Jedoch schließen sich die beiden Build-Tools nicht gegeneinander aus - vielmehr ist ein wechselseitiger Zugriff aus Sicht von beiden Tools möglich. Im Vergleich von Ant mit dem ebenfalls von der Apache Software Foundation entwickelten Build-Tool Maven, muss zunächst festgestellt werden, dass Maven die Funktionalität von Ant deutlich überschreitet. In Folge dessen ist aber auch die Einarbeitung in Maven umfangreicher - Ant ist in seinen Grundlagen transparenter zu verstehen. Allerdings liefert Maven ein mehr an Dokumentation, Anaylse und Reporting hinsichtlich Software-Metriken. Aber auch hier ist die Nutzung von Ant Scripts innerhalb von Maven kein Problem - Maven enthält sämtliche Tasks von Ant.

http://ant.apache.org

http://ant.apache.org/manual/

Inhalt teilen

Partner