Verwendung mehrerer Repositories in Maven

8

Ich habe ein Projekt, das ein internes Repository und das zentrale Repository verwendet. Gibt es eine Möglichkeit, die settings.xml so zu konfigurieren, dass ich beides anstelle von nur einem verwenden kann? Als ich

hinzugefügt habe %Vor%

in settings.xml kann ich in mein eigenes internes Repository schauen, aber es überschreibt das zentrale Repository.

Ich bin mir sicher, dass dies ein häufiges Problem für Maven-Neulinge ist.

    
Some Newbie 11.10.2012, 16:54
quelle

4 Antworten

8

Es gibt einige Möglichkeiten, dies zu tun.

Das Beste, IMO, ist, dass Ihr lokaler Repository-Server als Proxy für Maven Central fungiert. Sowohl Nexus als auch Artifactory tun dies sofort. Wenn Sie Apache oder einen anderen Webserver verwenden, sollten Sie wechseln.

Sie können auch Ihre Einstellungen aktualisieren und den Zielserver von Ihrem Spiegelserver ausschließen:

%Vor%

Das funktioniert, wenn Sie mehrere lokale Repository-Server haben, aber ich glaube nicht, dass Sie zentral auf diese Weise ausschließen können: Standardmäßig sucht Maven nach Artefakten in der Zentrale, und Ihr Server fungiert als Stand -in dafür.

Dies lässt explizite Repository-Einträge in Ihren POMS, die auf das lokale Repository verweisen. Wenn Ihr lokales Repository nur Ihre Artefakte bedient, ist dies vielleicht die zweitnächste Sache (besonders, wenn Sie ein Eltern-POM verwenden, das die Repository-Spezifikation enthält).

    
parsifal 11.10.2012, 17:00
quelle
4

Ihre Spiegel-Direktive spiegelt derzeit alles wider. Sie können named Repositories somit ausschließen:

%Vor%

Das Obige spiegelt alles außer dem Repository myExcludedRepo .

wider

Hier ist der Maven-Leitfaden zum Spiegeln . Beachten Sie insbesondere den Abschnitt Erweitert . Da gibt es viele Möglichkeiten.

    
Brian Agnew 11.10.2012 16:58
quelle
0

Ich habe eine funktionierende Antwort gefunden, nämlich die pom.xml zu ändern und remote Repositories im laufenden Betrieb hinzuzufügen, wie von diesen Link

Danke für die Antworten, Leute, und ich würde annehmen, dass Ihre Vorschläge für kompliziertere Szenarien mit mehr Repositories und komplexen Konfigurationen nützlich sein können.

    
Some Newbie 11.10.2012 19:01
quelle
0

Ich verwende drei Repos (unter Verwendung von Nexus), der erste ist ein Proxy-Repository, dem ich alle externen Repositories hinzufüge. Die anderen beiden sind meine internen Repositories für die Bereitstellung von Releases und Snapshots. Hier ist meine .m2 / settings.xml:

%Vor%

Maven verwendet sie alle, daher sollten Sie die Routing-Funktion von Nexus verwenden, um "^ / my / private / packages /.*" zu blockieren, damit nicht versucht wird, interne Pakete aus externen Repositories zu holen. Ich habe die internen Repos nicht zum Proxy-Repo hinzugefügt.

Sie müssen Ihre pom.xml-Dateien nicht anpassen, damit dies funktioniert. Geben Sie einfach "mvn deploy" ein.

    
user1050755 16.03.2014 13:21
quelle

Tags und Links