Maven - deploy Abhängigkeiten zu Remote-Repository

8

Ich habe ein paar Projekte mit vielen Maven-Abhängigkeiten. Wenn ich den Befehl mvn deploy (oder eine Variante davon) aufrufe, möchte ich nicht nur das Projekt selbst im entfernten Repository bereitstellen, sondern auch alle seine Abhängigkeiten. Ist das möglich? Ich sehe auf dieser Seite viele "ähnliche Fragen", aber ich kann nichts finden, was so einfach ist. Alles andere, was ich gesehen habe, scheint zusätzliche Funktionalität zu erwarten. Ich möchte einfach mein Projekt und alle seine Abhängigkeiten zu dem Remote-Repo bereitstellen. Ich benutze das Maven Compiler Plugin 1.5

Dies ist ein Ausschnitt meiner settings.xml. Irgendeine Idee, was ich vermisse?

%Vor%

Vielen Dank im Voraus ~ j

    
jacosta 12.01.2012, 19:19
quelle

3 Antworten

2

Sie könnten mit einem sauberen lokalen Repository beginnen, versuchen, Ihre Anwendung zu erstellen, und bei einem Abhängigkeitsfehler diese Anwendung in Ihrem Unternehmensrepository bereitstellen. Dies würde sicherstellen, dass alle Abhängigkeiten, die Ihre Anwendung benötigt, im Unternehmensrepository gespeichert sind, bevor Ihre Anwendung erstellt und bereitgestellt wird.

Vorher würden Sie Ihr lokales Repository so konfigurieren, dass es central und andere bekannte Repositorys spiegelt, so dass Open-Source-Bibliotheken von Drittanbietern automatisch in Ihr Remote-Repository gelangen und nicht manuell hochgeladen werden müssen.

>

Es kann sich herausstellen, dass Sie nicht zu viele Bibliotheken von Drittanbietern haben, die Sie manuell bereitstellen müssen .

    
Raghuram 13.01.2012, 04:24
quelle
3

So funktioniert es auf den Punkt gebracht, wenn Sie Ihr Remote-Repository (Nexus oder Artifactory oder Ähnliches) und settings.xml sind korrekt konfiguriert.

Nehmen wir an, Sie haben ein Projekt mit einer Abhängigkeit von commons-logging . Wenn Maven die Abhängigkeiten Ihres Projekts als Teil eines Builds auflöst, führt es die folgenden Schritte aus:

  1. Überprüft den lokalen Repo für commons-logging .
  2. Wenn gefunden, fertig. Weiter mit Build.
  3. Falls nicht gefunden: Sucht nach commons-logging im Remote-Repo.
  4. Falls gefunden, lade Artefakt auf lokales Repo herunter. Erledigt; Weiter mit Build.
  5. Falls nicht im Remote-Repo gefunden: Remote Repo Kontakte, um commons-logging herunterzuladen. Dann ist es für Maven verfügbar, es auf das lokale Repo herunterzuladen. Erledigt; Weiter mit Build.

Am Ende dieser Schritte sollte commons-logging sowohl in Ihren lokalen als auch in Ihren Remote-Repos liegen und Sie sollten nichts weiter tun. Wenn dies nicht der Fall ist, ist entweder Ihre settings.xml nicht für die Verbindung mit dem Remote-Repo konfiguriert, wenn nach Abhängigkeiten gesucht wird (kontaktiert sie direkt die Zentrale?) Oder Nexus ist nicht richtig konfiguriert.

---- Bearbeiten ----

Hier ist ein Ausschnitt meiner settings.xml, der funktioniert. @Raghuram gab dir einen guten Tipp, als er dir vorschlug, beide Profile zu aktivieren; Wenn du irgendwie nur das public-snapshots Profil aktiviert hast, würden deine Builds weiterhin maven central direkt treffen.

%Vor%

Beachten Sie das Element activeProfiles am unteren Rand; So stellen Sie sicher, dass Sie Nexus anstelle von Maven Central mit jedem Befehl mvn verwenden.

Sie müssen weiterhin sicherstellen, dass Nexus so konfiguriert ist, dass die in <mirror> definierte URL Inhalt von Maven central enthält. Die Konfiguration von Nexus wäre jedoch eine separate Frage.

Referenz: Nexus-Dokumentation für die Maven-Konfiguration

    
user944849 25.02.2012 01:51
quelle
1

Ich schlage die folgende Lösung vor, die viel weniger wie Versuch und Irrtum für die Auflösung von Abhängigkeiten im Vergleich zu den vorhandenen Antworten aussieht.

Sie können mvn -Dmdep.copyPom=true dependency:copy-dependencies nach dem Bereitstellen des Hauptprojekts aufrufen. Dadurch werden alle Abhängigkeiten Ihres Projekts transitiv in target/dependency einschließlich ihrer jeweiligen Pom-Dateien kopiert.

Sie können dann alle Abhängigkeiten durchlaufen und sie mit deploy:deploy-file , z. mit einer solchen Bash-Schleife:

%Vor%     
languitar 04.09.2014 14:27
quelle

Tags und Links