Das neue Major-Release von Apache Maven

Ausgepackt: Was ist neu an Maven 3

Gunther Popp

Viele Entwickler haben schon sehnsüchtig auf das neue Major-Release von Apache Maven gewartet. Jetzt ist es soweit: Nach mehreren Release Candidates wurde am 8. Oktober Maven 3 offiziell freigegeben.

Das Maven-Team ist ganz Apache-typisch recht zurückhaltend bei der Vergabe neuer Versionsnummer, man sollte die neue 3 ganz vorne also ernst nehmen. Intern wurde Maven erheblich umgebaut und erweitert, es ist buchstäblich (fast) kein Stein auf dem anderen geblieben. Aber keine Angst: Anders als beim letzten großen Update von Maven 1 auf Maven 2 sind diesmal keine großen Probleme beim Umstieg zu erwarten. Rückwärtskompatibilität stand auf der Liste der Ziele für das neue Release ganz oben. Erste Tests mit Maven 3 bestätigen dann auch den guten Eindruck der vorhergegangenen Betas und Release Candidates. Die meisten Projekte sollten ohne größere Änderungen mit Maven 3 bauen, da sowohl die POMs, als auch die meisten Plug-ins direkt weiterverwendet werden können. Nur an wenigen Stellen sind Anpassungen notwendig, z.B. bei der Generierung der Projekt-Homepage über den site-Lifecycle (weitere Details zur Kompatibilität mit Maven 2.x finden sich unter [1] und [2]).

Maven als Plattform

Der Schwerpunkt bei der Entwicklung von Maven 3 lag eindeutig auf der Bereitstellung einer soliden und ausbaufähigen Build-Plattform für die nächsten Jahre. Maven 3 ist daher viel mehr als ein reines Build-Werkzeug, auch wenn es diese Aufgabe natürlich weiterhin erfüllt. Es bietet darüber hinaus jedoch deutlich umfangreichere Möglichkeiten zur Erweiterung und Anpassung als das Vorgänger-Release. So kann man über Extension Points gezielt bestimmte Funktionen von Maven an die eigenen Bedürfnisse anpassen. Die neuen Möglichkeiten werden beispielsweise vom Projekt Polyglot Maven [3] genutzt. Dieses stellt mehrere alternative DSLs zur Erstellung des Maven POMs bereit. Wer mag, kann also in Zukunft POMs in Groovy statt in XML deklarieren.

Viel investiert wurde zudem in eine generelle Überarbeitung und Vereinfachung der Code-Basis. Dadurch soll der Einstieg in die Entwicklung von eigenen Maven-Erweiterungen erleichtert werden. Auch große Schritte waren hierbei nicht tabu. Das Maven-Team hat unter anderem kurzerhand das Dependency-Injection-Framework Plexus, auf dem Maven 2.x aufsetzt, durch Google Guice [4] ersetzt. Plexus ist schon etwas in die Jahre gekommen und nur sehr spärlich dokumentiert. Mit der Umstellung auf Guice bleibt neuen Maven-Entwicklern die mühsame und bisher unvermeidliche Einarbeitung in Plexus erspart.

Auch die schon in Maven 2.x begonnene Modularisierung der einzelnen Funktionsbausteine wurde in Maven 3 konsequent weitergetrieben. Im Fokus standen hierbei insbesondere die mächtige Artefakt-Verwaltung und die Kommunikation mit Maven-Repositorys. Dieser Baustein von Maven steht nun als eigenständige Library mit dem Namen Aether auch anderen Projekten zur Verfügung.

Geschrieben von
Gunther Popp
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.