Seit ein paar Wochen arbeite ich zusammen mit ein paar Kollegen mit der Entwicklung eines Programms in der Programmiersprache Java. Wie bei vielen Projekten verwenden wir externe Bibliotheken für einige Zusatzfunktionalitäten. Dabei war das Problem auf alle Entwickler-PC’s (ich habe selbst zwei davon) diese Abhängigkeiten zu verteilen und den Kompilierungsvorgang für alle Beteiligten zu vereinheitlichen bzw. vereinfachen. Auf meiner Suche bin ich dabei auf Apache Maven , ein auf Java basierendes Build-Management-Tool der Apache Software Foundation  gestoßen. Im folgenden zeige ich zunächst, was Maven ist, was es auszeichnet und wie man es am einfachsten in eclipse einrichtet. Die Verwendung von Maven soll Teil eines weiteren Tutorials sein.

Maven unterstützt Software-Entwickler beim Kompilieren, Testen, Packen (Zip/Jar/War) und bei der Auslieferung der Software durch Automatisierung der Einzelschritte. Dabei geht Maven standardmäßig von einem Lebenszyklus einer Software aus, der wie folgt abläuft:

  • validate: Prüfung der Projektstruktur
  • compile: Kompilierung des Quellcodes
  • test: Testen des Codes mittels eines Frameworks
  • package: Verpacken des Programms.
  • integration-test: Prüfung des Programms in einer anderen Software-Umgebung
  • verify: Gültigkeitsprüfung des Software-Pakets
  • install: Installieren im lokalen Maven-Repository. Dies ist eher bei modularen Projekten interessant oder wenn Abhängigkeiten nicht automatisch erfüllt werden können.
  • deploy: Installieren von stabilen Softwareversionen in einem im entfernten Maven-Repository

Dieser Lebenszyklus ist nur der Standard, welcher problemlos durch weitere Plugins erweitert werden kann. So verwenden wir beispielsweise im Projekt das Plugin maven-javadoc-plugin , welches automatisiert eine JavaDoc-Dokumentation aus dem Quellcode erzeugt.

Maven wird über eine einzige Datei konfiguriert, die sogenannte pom.xml. Diese liegt im Hauptordner des Projektes und enthält den Namen und andere Details des Projektes, sowie die verwendeten Abhängigkeiten (Dependencies) und Lifecycle-Module (Plugins). Des weiteren kann man darin auch sogenannte Reporting-Plugins einbinden, die beispielsweise mittels cobertura eine graphische Anzeige der Test-Abdeckung (des Codes) generieren. Die genaue Konfiguration wird Teil eines separaten Tutorials.

Insgesamt soll Maven also den Entwickler unterstützen, das grundlegende Problem ist aber die Integration in eine Entwicklungsumgebung. Genau für diesen Zweck wurde das eclipse-Plugin m2eclipse  entwickelt, dass die Einbindung von Maven regelt.

Zunächst muss ein JDK sowie eclipse heruntergeladen werden. Ich habe die momentanen Versionen (eclipse 3.4 (Ganymede) sowie JDK 1.6.0_10) verwendet. Sobald eclipse gestartet ist, muss das m2eclipse-plugin installiert werden. Dazu geht man über “Help” auf “Software Updates…”.

M2Eclipse
M2Eclipse

Dann rechts auf “Add Site…” und folgende Adresse hinzufügen:

1
http://m2eclipse.sonatype.org/update/

Dann werden im Hauptfenster folgende Punkte ausgewählt:

M2Eclipse

  • [*] Maven Integration
    • [*] Maven Embedder
    • [*] Maven Integration for eclipse
    • [*] Maven POM Editor
    • [*] Maven POM XML Editor
  • [*] Maven Optional Components
    • [*] Maven Central Repository Index

Optional kann man zusätzlich die Integration von Subclipse (SVN-Plugin) und den Issue Tracking Configurator for MyLyn 3.x auswählen, wenn diese Systeme vorhanden sind.

M2Eclipse

Nach der Installation finden sich in “File” -> “New” -> “Other” unter dem Stichwort “Maven” ein paar neue Punkte. Im Bild rechts sieht man die verfügbaren Punkte “Checkout Maven projects from SCM”, “Maven Module”, “Maven POM File” sowie “Maven Project”. Der letzte Punkt ist eigentlich der wichtigste, dieser produziert ein Projekt mit Maven Integration, was Teil eines weiteren Tutorials sein wird.