Maven 3.1.0 enthält neue Repository-Bibliothek und unterstützt Dependency Injection

Knapp drei Jahre nach Erscheinen von Maven 3 ist eine neue größere Version des Build-Werkzeugs zum Download freigegeben worden. Neu sind die Einbindung des Eclipse-Projekts Aether und die Unterstützung für Dependency Injection.

In Pocket speichern vorlesen Druckansicht 81 Kommentare lesen
Lesezeit: 3 Min.
Von
  • Markus Eisele

Das insbesondere in der Java-Entwicklung verbreitete Build-Werkzeug Apache Maven steht in Version 3.1.0 zum Download bereit. Unter der Haube hat sich einiges getan. Zentral ist hier der Wechsel von Sonatype Aether zum Nachfolgeprojekt Eclipse Aether. Die für die Arbeit mit Artefakt-Repositories entwickelte Bibliothek wird in den kommenden Wochen noch für einige Unruhe bei diversen Maven-Plug-ins sorgen. Denn eine java.lang.NoClassDefFoundError: org/sonatype/aether/*-Exception taucht bei allen Plug-ins auf, die noch für Maven 3.0.x entwickelt wurden. Die Vorgängerversion war im Herbst 2010 freigegeben worden.

Eine Liste der bislang nicht kompatiblen Plug-ins findet sich im Apache-Wiki. Leider ist derzeit mindestens das für typische Projekte kritische Plug-in sonar betroffen. Die Plug-in-Entwickler haben jedoch kurzfristige Abhilfe signalisiert. Maven 3.1.0 ist zwar für den produktiven Einsatz freigegeben, die fehlenden Plug-ins lohnen allerdings weitere Wartezeit.

In Summe wurden knapp 30 Fehler behoben und eine zweistellige Zahl neuer Funktionen eingebaut. So verwendet Maven ab jetzt beispielsweise slf4j für alle Logging-Aktivitäten. Die SLF4J-Simple-Implementierung lässt sich über die ${MAVEN_HOME}/conf/logging/simplelogger.properties-Datei entsprechend konfigurieren. Ein Austausch der Logging-Implementierung ist nunmehr auch durch das einfache Ersetzen der entsprechenden Bibliotheken im /lib-Verzeichnis möglich. Wer mag, kann unter anderem Log4j 2 oder Logback einsetzen. Mehr Details zu den Konfigurationen finden sich auf der Maven-Logging-Website.

Außerdem wurde der IoC-Container Plexus (Inversion of Control) ausgetauscht. Das neue Maven unterstützt schon etwas länger den JSR 330 (Dependency Injection for Java) sowie die Referenzimplementierung Guice 3.x, neu ist, dass auch Plug-ins diese Implementierung direkt nutzen können. Im Gegensatz zur Aether-Umstellung lassen sich alle drei Wege (Plexus, JSR 330 und Guice API) nebeneinander verwenden. Mit dem vollständigen Verzicht auf die Maven-2-Kompatibilität werden die Plexus APIs dann allerdings nicht mehr zur Verfügung stehen. Die Verwendung des neuen Dependency-Injection-Frameworks in Erweiterungen und Plug-ins dokumentiert eine eigene Webseite.

Anm. der Redaktion: Ein freundlicher Leser hat darauf aufmerksam gemacht, dass die ursprünglich in der Meldung genannten Plug-ins dependency und site doch schon mit der neuen Maven-Version kompatibel sind. Auch ging die frühere Version dieser Meldung davon aus, dass die JSR-330-/Guice-Unterstützung neu sei. Sie besteht allerdings bereits seit der dritten Beta von Maven 3.0. (ane)