2013-07-04 6 views
5

Nun, das Problem ist, dass ich Maven Abhängigkeit Version auf Build überprüfen und warnen möchte, wenn es neuere Abhängigkeit Versionen gibt (in der Tat - benachrichtigen Sie mich, wenn ich eine veraltete Version eines Moduls verwenden). Mein Maven Modul A hat die folgende Abhängigkeit:Wie kann man einen Maven Build nicht ausführen, wenn eine neuere Version der Abhängigkeit im Repository existiert?

<dependency> 
    <groupId>com.example.mycompany</groupId> 
    <artifactId>commons</artifactId> 
    <version>1.0.3</version> 
</dependency> 

Und com.example.mycompany:commons Modul in der Tat bereits 1.0.4 Version haben. Gibt es eine Möglichkeit, Version der Abhängigkeit in Repo zu überprüfen und den Build fehlzuschlagen, wenn eine neuere Version bereits verfügbar ist. Ich hoffe, dass versions-maven-plugin es machen kann. Aber ich kann keine passende Konfiguration finden.

+0

Haben Sie überprüft [Versionen-Maven-Plugin: Anzeige Abhängigkeit-Updates] (http://mojo.codehaus.org/ Versionen-Maven-Plugin/Beispiele/Display-Abhängigkeit-Updates.html) Ziel? Dies kann verwendet werden, um einen Bericht zu erstellen und kann analysiert werden, um zu erreichen, was Sie möchten? – khmarbaise

+0

In der Tat verwende ich die mit benutzerdefinierten Enforcer-Regel als @spacetrucker unten erwähnt. – revenforv

Antwort

3

Dieses Problem kann mit dem maven-enforcer-plugin gelöst werden. Sie müssen Ihre eigenen custom rule erstellen, weil nicht die standard rules scheinen, um Ihre Bedürfnisse zu entsprechen.

Der Begriff der Regel, die Sie implementieren werden, sollte Enforce Abhängigkeiten sind auf dem neuesten Stand. Um den Check zu implementieren, können Sie sich von dem von Ihnen erwähnten versions-maven-plugin inspirieren lassen.

+0

Das sieht nach der richtigen Lösung aus. Vielen Dank! – revenforv

+1

@revenforv Möchten Sie diese benutzerdefinierte Regel veröffentlichen? Ich würde es gerne selbst benutzen. – xnickmx

+0

@xnickmx Leider nein. Wir hatten keine Zeit für diese benutzerdefinierte Regel und entschieden uns daher, den Ansatz "manuelle Prüfung und Änderung der Version" zu verwenden. – revenforv

0

Wenn Sie Quellcodeverwaltung und eine kontinuierliche Integration-Server verwenden (das ist eine sichere Annahme ist) können Sie:

  1. die versions plugin verwenden und lassen Sie es die pom
  2. dann die scm:check-local-modification oder die Freigabe verwenden ändern Plugin als Release-Plugin IIRC prüft auf lokale Änderungen.

Hier ist ein Beispiel für die neueste Eltern pom Überprüfung:

mvn versions:update-parent scm:check-local-modification -DallowSnapshots=false -DgenerateBackupPoms=false