Apache Ant

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springenZur Suche springen
Apache Ant

Apache Ant Logo – Entworfen von Nick King
Basisdaten

EntwicklerApache Software Foundation
Erscheinungsjahr19. Juli 2000
(Version 1.1)
Aktuelle Version1.10.15[1]
(29. August 2024)
BetriebssystemPlattformunabhängig
Programmier­spracheJava[2][3]
KategorieBuild-Management-Tool
LizenzApache-Lizenz, Version 2.0
ant.apache.org

Apache Ant (englisch fürAmeise) ist ein inJava geschriebenes Programm zumautomatisierten Erzeugen von ausführbarenComputerprogrammen ausQuelltexten.

Es erfüllt den gleichen Zweck wie das sehr verbreitete Programmmake, nämlich die automatisierte Erstellung von installierbaren Software-Paketen aus existierendem Quelltext,Bibliotheken und sonstigen Dateien. Ant istOpen Source, startete als Teil desJakarta-Projekts und ist nun einApache-Top-Level-Projekt. Ant ist einApronym und steht für „Another Neat Tool“ (englisch für „Noch ein hübsches Werkzeug“). Entwickelt wurde die erste Version vonJames Duncan Davidson, der1999 ein Werkzeug wie make für Java benötigte, während er die ersteJakarta-EE-Referenz-Implementierung entwickelte. Davidson gilt außerdem als Vater vonJakarta Tomcat. Für ihn steht der Name „Ant“ dafür, dass es als kleines Programm, genau wie die kleinen Ameisen, Großes leisten kann.

Inhaltsverzeichnis

Beschreibung

[Bearbeiten |Quelltext bearbeiten]

Im Unterschied zumake ist Ant inJava implementiert und benötigt somit zur Ausführung eineJava-Laufzeitumgebung (JRE).

Begriffe

[Bearbeiten |Quelltext bearbeiten]

Gesteuert wird Ant durch eineXML-Datei, die so genannteBuild-Datei. Sie heißt standardmäßigbuild.xml. In der Build-Datei wird einproject (deutsch „Projekt“) definiert. Dies ist das Wurzelelement der XML-Datei. Zu einem Software-Projekt sollte genau eine Build-Datei und damit genau ein Ant-Project gehören.

Das Ant-Project enthältTargets (deutsch „Ziele“). Diese sind vergleichbar mit Funktionen inProgrammiersprachen und können von außen, zum Beispiel vom Entwickler über dieKommandozeile oder dieEntwicklungsumgebung, gezielt aufgerufen werden. Die Targets sollten in ihrer Gesamtheit alle bei der Arbeit mit einem Software-Projekt anfallenden Tätigkeiten abdecken. Zwischen denTargets können Abhängigkeiten definiert werden, entsprechend den Anforderungen an die Abhängigkeiten. Beim Aufrufen eines Targets löst Ant diese Abhängigkeiten auf und arbeitet die Targets entsprechend ab. Wenn man ein Target definiert hat, welches direkt oder indirekt Abhängigkeiten zu anderen Targets hat, so genügt es, dieses aufzurufen und Ant führt dann alle notwendigen Arbeitsschritte in der richtigen Reihenfolge aus.

Im Project kann ein Target alsDefault-Target angegeben werden. Dies ist normalerweise das Target, das aus dem Rohzustand oder einem Zwischenzustand des Software-Projektes die jeweils nötigen Schritte durchführt, um einen lauffähigen Zustand herzustellen.

Ein Target besteht aus Aufrufen vonTasks (deutsch „Aufgaben“). Sie sind vergleichbar mit Befehlen in Programmiersprachen.

Syntax und Schnittstellen

[Bearbeiten |Quelltext bearbeiten]

Da es sich bei derBuild-Datei um eine XML-Datei handelt, hängt ihre Bedeutung nicht vonTabulatorzeichen,Leerzeichen oder Pfadtrennzeichen ab, die auf unterschiedlichenBetriebssystemen unterschiedlich definiert sind. Dies ist insbesondere eine Verbesserung gegenüber den von make benutztenMakefiles.

Ant ist ein offenes System mit definierten Schnittstellen, wodurch es z. B. durch selbst erstellte Tasks beliebig erweitert werden kann. Viele Java-Werkzeuge unterstützen Ant. Außerdem lässt es sich auch in eigene Anwendungen – z. B. Installationsprogramme – einbinden, um verschiedenste meistBatch-artige Aufgaben zu übernehmen.

Häufig verwendete Tasks

[Bearbeiten |Quelltext bearbeiten]

Ant enthält über 150 Tasks, wobei man auch eigene Tasks in Java selbst programmieren kann. Diese Liste enthält einige eingebaute (englischbuilt-in) Tasks von Ant.

  • javac zumKompilieren von Quellcode.
  • copy zum Kopieren vonDateien.
  • delete zum Löschen von Dateien oderVerzeichnissen.
  • mkdir zum Erstellen vonVerzeichnissen.
  • junit für automatisierte (JUnit-)Tests.
  • move zum Umbenennen von Dateien oder Verzeichnissen.
  • exec zum Ausführen von System-Programmen. Achtung: Bei Benutzung dieses Tasks begibt man sich häufig in die Abhängigkeit eines Betriebssystems!
  • zip zumZippen, also zum Komprimieren von Dateien.
  • cvs zum Durchführen vonCVS-Operationen.
  • mail zum Versenden vonE-Mails.
  • replace zum Ersetzen von Text in Dateien.

Flexibel einsetzbar ist auch der vordefinierte TaskXslt zur Transformation einer XML-Datei in z. B. eine HTML-Datei unter Verwendung einer gegebenenXSLT-Datei.

Beispiele für Targets

[Bearbeiten |Quelltext bearbeiten]

Während Tasks als Java-Klassen implementiert sind, werden Targets in XML definiert und rufen Tasks auf. Es können auch eigene Tasks in Form von Java-Klassen erstellt werden.

Der folgende Ausschnitt aus einer typischen Build-Datei zeigt zwei Targets:build erzeugt ein Verzeichnis und kompiliert eine Menge von Java-Klassen dort hinein. Es hängt von einem anderen Targetclean ab, das zuvor einige Verzeichnisse und Dateien löscht, um Überbleibsel früherer Aufrufe zu beseitigen.

<?xml version="1.0"?><projectname="Demo"basedir="."default="build"><propertyname="build.classes"value="bin"/><propertyname="build.lib"value="lib"/><propertyname="java.dir"value="."/><propertyname="name"value="Wikipedia-Demo"/><propertyname="manifest"value="manifest"/><pathid="classpath"><pathelementlocation="."/></path><!-- Anwendung bauen  --><targetname="build"depends="clean"description="Baut die komplette Anwendung"><!-- Verzeichnis anlegen --><mkdirdir="${build.classes}"/><!-- Quelltext kompilieren --><javacsrcdir="${java.dir}"destdir="${build.classes}"debug="false"deprecation="true"optimize="true"><classpathrefid="classpath"/></javac><!-- Kopiert notwendige Dateien --><copytodir="${build.classes}"><filesetdir="${java.dir}"><includename="**/*.properties"/><includename="**/*.gif"/></fileset></copy><!-- Baut die JAR-Datei --><jarjarfile="${build.lib}/${name}.jar"manifest="${manifest}"><filesetdir="${build.classes}"/></jar></target><!-- Aufräumen  --><targetname="clean"description="Räumt die temporär angelegten Dateien weg"><!-- Löscht Dateien --><deletedir="${build.dir}"/><deletedir="${dist.base}"/><deletedir="${defaultdist.dir}"/><delete><filesetdir="."includes="**/*~"defaultexcludes="no"/></delete></target></project>

Die mit einem Dollar-Zeichen ($) versehenen Bereiche stellenProperties dar. Es handelt sich dabei um vorher im Projekt oder in anderenTargets definierte Variablen.

Siehe auch

[Bearbeiten |Quelltext bearbeiten]

Literatur

[Bearbeiten |Quelltext bearbeiten]

Weblinks

[Bearbeiten |Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. August 29, 2024 - Apache Ant 1.10.15 Released. 29. August 2024 (abgerufen am 6. Februar 2025).
  2. The ant Open Source Project on Open Hub: Languages Page. In:Open Hub. (abgerufen am 21. September 2018).
  3. projects.apache.org. (abgerufen am 8. April 2020).
Normdaten (Sachbegriff):GND:4689797-5(lobid,OGND,AKS) |LCCN:n2002066009 |VIAF:181177554
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Apache_Ant&oldid=248366027
Kategorien: