Maven Dependency Updates leicht gemacht

07.04.2016

In einem aktuellen Kundenprojekt sollten alle Abhängigkeiten  auf den neuesten Stand aktualisiert werden. Dies kann in manueller Arbeit erfolgen, es geht aber auch automatisiert.

Unterstützung bei Maven Dependency Updates erhält man dabei vom Maven Versions Plugin. Dieses Plugin bietet ein Tooling rund um das Verwalten von Abhängigkeiten, Plugins, Projektversionen u.v.m.

Um herauszufinden, für welche Abhängigkeiten es in den referenzierten Repositories Updates gibt, genügt es, im Projekt-Stammverzeichnis (Speicherort der Parent POM) folgenden Befehl auszuführen [LINK]. Ein Vorteil am Maven Versions Plugin ist, dass es Out-of-The-Box unterstützt wird. Es sind also keine Anpassungen der POM notwendig.

mvn versions:display-dependency-updates

Dadurch wird auf der Konsole ein Report in folgender Form ausgegeben:

[INFO] The following dependencies in Dependency Management have newer versions:
[INFO]   ch.qos.logback:logback-classic ........................ 1.1.3 -> 1.1.7
[INFO]   com.airhacks:afterburner.fx ........................... 1.6.2 -> 1.6.3
[INFO]   com.google.guava:guava .................................. 18.0 -> 19.0
[INFO]   com.xebialabs.restito:restito ........................... 0.7 -> 0.8.1
[INFO]   de.doubleslash.slashbox:FileSystemUtils ...... 1.0.0-SNAPSHOT -> 1.0.0
[INFO]   de.saxsys:jfx-testrunner .................................. 1.1 -> 1.2
[INFO]   net.java.dev.jna:jna .................................. 4.1.0 -> 4.2.2
[INFO]   org.apache.commons:commons-collections4 ................... 4.0 -> 4.1
[INFO]   org.apache.httpcomponents:httpclient .................... 4.5 -> 4.5.2
[INFO]   org.powermock:powermock-api-mockito ................... 1.6.2 -> 1.6.4
[INFO]   org.powermock:powermock-module-junit4 ................. 1.6.2 -> 1.6.4
[INFO]   org.slf4j:slf4j-api ................................. 1.7.12 -> 1.7.21

Sofern man mit den Maven Dependency Updates einverstanden ist, kann man diese mittels nachfolgendem Befehl direkt anwenden. Maven fügt die neuen Versionsnummern dann automatisch in die entsprechenden POMs ein [LINK].

mvn versions:use-latest-versions

Sofern man eine Parent-POM mit dependencyManagement-Sektion verwendet, werden die Änderungen nur an einer Stelle vorgenommen und sind mittels svn diff relativ leicht nachvollziehbar. Ein Update aller Dependencies ist damit innerhalb weniger Minuten möglich. Auch Plugins können mit einem ähnlichen Vorgehen auf verfügbare Update überprüft werden [LINK]. Nach erfolgreichem Update sollte eine umfangreiche Absicherung des Zusammenspiels der Abhängigkeiten mit der eigenen Applikation durchgeführt werden. Durch die Maven Dependency Updates kann es zu geändertem Verhalten der Abhängigkeiten kommen. Im schlimmsten Fall ändern sich Methodensignaturen oder es werden @Deprecated-Methoden entfernt. In diesem Fall wird das Projekt nicht mehr erfolgreich gebaut werden können. Dies macht entsprechenden Anpassungen am eigenen Quellcode notwendig. Für diese Anpassungen kann die Zeit genutzt werden, die man durch die Verwendung des Maven Versions Plugin gewonnen hat.

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*