Apache Ant

Basisstruktur für ein Java-Projekt
Basisstruktur für ein Java-Projekt

Ant ist das Make für Java-Projekte. Ant ist kein komplettes Build-System wie Maven, aber das will es auch nicht sein.

Das angehängte Beispielprojekt verwendet ein Ant-Skript zum kompilieren, testen und verteilen. Damit deckt es die wichtigsten Phasen von Maven ab. Die entsprechenden Targetnamen sind auch an Maven angelehnt.

  • validate: Validiert das Projekt und stellt sicher, dass alle Informationen zum Bauen vorhanden sind.
  • compile: Kompiliert den Quelltext.
  • test: Führt Unittests durch.
  • package: Packt den kompilierten Quelltext in ein weitergebbares Format, z. B. als JAR-Artefakt.
  • integration-test: Bei einem Projekt, welches aus mehreren Komponenten besteht, werden hier Integrationstest durchgfeührt.
  • verify: Prüft auf die Erfüllung von Qualitätskriterien, im einfachsten Falle mit Checkstyle.
  • install: Installiert das Artefakt in ein lokales Repository, zur Weiterverwendung als Abhängigkeit.
  • deploy: Kopiert das Gesamtpaket des Projekts in ein extenes Repository.
  • clean: Löscht alle temporären Dateien, die während des Bauens angelegt werden.
  • site: Erzeugt die Projektdokumentation.

Da hier Ant statt Maven eingesetzt wird, werden ggf. weitere Werkzeuge notwendig. Für validate und install kann man einfach Dateien kopieren und Entpacken oder Apache Ivy nutzen. Ivy ergänzt Ant um ein Repository für Artefakte und stellt eine leichtgewichtige Alternative zu Maven dar. Für site wird schlicht die Quelltextdokumentation mittels JavaDoc erzeugt.

Die Projektstruktur baut auf den Projektkonvetionen vom Sun/Oracle auf (siehe Abbildung).

  • build: Beinhaltet den kompilierten Quelltext.
  • components: Beinhaltet die Teilkomponenten des Projekts. Die Struktur der Teilkomponenten gleicht denen des Projekts.
  • dist: Beinhaltet alle Dateien des Gesamtpakets und wird vom deploy-Task einfach zusammengepackt.
  • docs: Beinhaltet die (statische) Dokumentation des Projekts.
  • lib: Beinhaltet die Abhängigkeiten des Projekts. Diese können direkt im SCM gespeichert sein oder mittels validate-Task hier temporär abgelegt werden.
  • setup: Beinhaltet Konfigurationsdateien wie z. B. SQL-Skripte.
  • src: Beinhaltet den Quelltext des Projekts.
  • test: Beinhaltet Testskripte für Integrationstests. Der Quelltext der Tests wird unter src/test abgelegt.

build, dist und ggf. lib enthalten temporäre Dateien, die nicht im SCM eingecheckt werden sollten. Im Beispielprojekt gibt es dafür eine entsprechende Datei .gitignore.

Das angehängte Beispiel ist ein Eclipse-Projekt, kann aber auch in anderen IDEs verwendet werden. Die Eclipse-spezifischen Files .settings, .classpath, .project können dann gelöscht werden.

Links

Zurück