Wie in jedem Release einer Software üblich, sind auch in der Version 2.1.0 einige Bugs behoben worden. Neben diesen obligatorischen Fehlerbehebungen wurde die vorhandene Funktionalität ausgebaut und verbessert. Folgende Punkte sind hierbei besonders hervorzuheben:
- Neue Phase
prepare-package(Details: MNG-2097) - Neuer Build-Modus, der an Make angelehnt ist. (Details: MNG-2576)
- Abhängigkeiten (Dependencies) werden nun in parallelen Threads aufgelöst. Standardmäßig laufen 5 Threads hierfür parallel (Anzahl einstellbar über -
Dmaven.artifact.threads). (Details: MNG-3379) - Passwörter für einen Serverzugriff (Abschnitt
servers) können nun verschlüsselt abgelegt werden und müssen somit nicht mehr unverschlüsselt in dersettings.xmlhinterlegt werden. (Details: MNG-553) - Kommandozeilenoption hinzugefügt, um den Ablageort der globalen Einstellungen zu konfigurieren. (Details: MNG-3914)
- Einführung der Property
project.baseUri}zur Verwendung in den POMs. Hierüber erhalten Sie das Basisverzeichnis des Projektes als URL, denn bestimmte Plug-ins benötigen den Pfad in Form eines URL. Mit den bisherigen Möglichkeiten war der URL aber nicht plattformunabhängig beschreibbar. (Details: MNG-3760)
Eine Liste mit allen Details zu den Änderungen in Version 2.1.0 ist über den Bugtracker von Maven erhältlich. Oft erkennt man am Änderungshinweis, dass diese schon vorbereitend auf das große Release 3.0 gemacht wurden. Das nächste Release wird aber erstmals die Version 2.2.0 sein.
Installation unverändert
Die Installation von Maven 2.1.0 hat sich gegenüber der Vorgängerversion 2.0.10 nicht verändert. Nach dem Download des entsprechenden Archives (z.B. apache-maven-2.1.0-bin-zip) muss dieses lediglich in ein entsprechendes Verzeichnis extrahiert werden. Rein am Verzeichnislayout (Abb. 1) sind keine Unterschiede zur Vorversion zu erkennen. Eine Parallelinstallation zu einer bereits vorhandenen Maven-Installation ist problemlos möglich.
Um die Installation zu testen, ist das Kommando mvn --version im Verzeichnis bin der Installation abzusetzen. Nun sollte die Versionsnummer von Maven ausgegeben werden. Für die Ausführung dieses Kommandos muss die Umgebungsvariable JAVA_HOME gesetzt sein.
Zwei Änderungen im Detail
Um den Entscheid über einen Wechsel zu Maven 2.1.0 besser treffen zu können, sollen die zwei wesentlichsten Änderungen, nämlich die neue Build-Phase prepare-package und der neue Build-Modus, etwas näher betrachtet werden.
Maven teilt den Build-Prozess in mehrere Phasen auf. Für die Erstellung der fertigen Distribution eines Projekts dient die Phase package. Für solch eine Distribution sind oft auch vorbereitende Aufgaben (z.B. Generierung der web.xml) erforderlich. Bisher war es nicht möglich, diese Aufgaben in einer speziellen Vorbereitungsphase auszulagern, die auch nur beim Aufruf von package durchgeführt wird. Mit Maven 2.1.0 wurde nun die Phase prepare-package eingeführt. Diese wird vor dem eigentlichen Erstellen der Distribution ausgeführt.
Bei einem Projekt, das aus mehreren Modulen besteht, bestand bisher die Möglichkeit, das komplette Projekt oder ein einzelnes Modul zu erzeugen. In Abbildung 2 ist ein beispielhaftes Projekt mit mehreren Moduln abgebildet. Die Module haben untereinander Abhängigkeiten.
Gesetzt den Fall, dass Modul C geändert wurde, bekommt Modul A dies bisher nur mit, wenn das Gesamtprojekt (d.h. auf Ebene Root) gebaut wird. Mit dem neuen Modus ist es nun möglich, ein Modul (d.h. auf Ebene Modul A) zu übersetzen und gleichzeitig alle Module, von denen das Projekt abhängt. Dies wird über die Kommandozeilenoption -am ermöglicht. Es geht auch umgekehrt, d.h. es können alle Module erzeugt werden, die von einem bestimmten Projekt abhängen. In unserem Beispiel heißt dies, dass bei Erzeugung von Modul C auch Modul A erzeugt wird. Dies funktioniert über die Kommandozeilenoption -amd. Besonders bei großen Projekten mit vielen Modulen hilft dieser Modus bei der Steigerung der Produktivität, denn dadurch muss nicht mehr zwingend das gesamte Projekt übersetzt werden.
Umstieg leichtgemacht
Neben kleinen Änderungen sind sicherlich die zwei Hauptänderungen prepare-package und der neue Build-Modus ein Grund für den Umstieg. Auch das parallele Auflösen von Abhängigkeiten wird in der täglichen Arbeit zu kleinen Geschwindigkeitsvorteilen verhelfen. Der Umstieg von Maven 2.0.x auf Maven 2.1.0 sollte in den meisten Projekten problemlos machbar sein. Um sicher zu sein, sollten kurz die Änderungen MNG-3600, MNG- 3475 und MNG-4056 betrachtet werden, ob diese für das eigene Projekt relevant sind. Bei neuen Projekten, die auf Maven basieren, sollte man auf jeden Fall zu dieser Version greifen. Bei alten Projekten können Sie aber ruhig den Probelauf wagen!
Markus Stäuble ist CTO (Head of Technology) bei namics (deutschland) GmbH, einem führenden IT- und Webdienstleister. Darüber hinaus ist er freier Autor von Fachartikeln.






