2016-04-22 5 views
0

Ich arbeite an einem großen Projekt mit vielen Maven-Modulen. Jetzt muss ich sicherstellen, dass der Build fehlschlägt, wenn ein Buildartefakt im lokalen Repo oder im frisch erstellten Build nicht verfügbar ist.Ignoriere Artefakte von entfernten Maven Repo

Bis jetzt habe ich alle notwendigen Abhängigkeiten vorher für den Build heruntergeladen, die Artefakte, die neu im lokalen Repo erstellt werden, gelöscht und dann den Build im Offline-Modus ausgeführt.

Dies ist ein hässlicher Workaround und ich weiß, dass es nicht die beste Praxis ist, so zu arbeiten, aber ich habe keine andere Wahl. Also habe ich mich gefragt, ob es einen einfacheren Weg gibt, Artefakte aus dem Remote-Repo zu ignorieren oder Maven zu sagen, nur frisch gebaute Artefakte zu verwenden.

EDIT: Beispiel

Ich habe ein Projekt mit einem Super-pom und 2 Module.

Jetzt ist die aktuelle Version des Super POM 2.0.0-SNAPSHOT aber die Module Referenzversion 1.0.0. In diesem Fall sollte der Build fehlschlagen. Aber in Wirklichkeit lädt es einfach die 1.0.0 Version des Super Pom aus dem Remote Repo herunter und bricht im schlimmsten Fall den Build.

Das ist problematisch, da ich nicht die Kontrolle über das Repo habe und die Leute, die eine seltsame Versionierung haben, die meinen Build mehrfach gebrochen haben, da ich gerade an ein paar Modulen arbeite.

+0

Mult Module bauen? Sprechen Sie über Abhängigkeiten zwischen Modulen oder andere Abhängigkeiten? Kann ein ausführlicheres Beispiel geben, was du meinst? – khmarbaise

Antwort

0

In meiner Arbeitsumgebung habe ich separate POM-Dateien für die Verwendung durch Entwickler und für offizielle Builds erstellt.

Für Entwickler gibt es Punkt POMs an benutzerspezifischen Gruppenkenn, die nur durch den Entwickler vor Ort in ihrem lokalen .m2 Repository erstellt werden konnte, so etwas wie com.mycompany.myproject.users verwenden. $ {Username}, die verhindert, Entwickler sammeln offizielle Artefakte aus dem Corporate Maven Repository.

Die offiziellen Build-POMs com.mycompany.myproject als GroupId verwendet, so dass sie offizielle Artefakte Ende-zu-Ende bauen und verwenden.

Nun, wenn ein Entwickler eine Kombination aus offiziellen und lokalen Artefakten benötigt, kann die POM-Datei als solche angepasst werden; Es kann jedoch zu schwerwiegenden Abhängigkeitsproblemen kommen, wenn ein offizielles Artefakt eine Downstream-Abhängigkeit mitbringt, die Sie auch lokal erstellen. Das Problem besteht darin, dass die Klassenverpackung die gleiche ist und Maven nicht die von Ihnen erwartete aufhebt.