Frage

i heruntergeladen vor kurzem einige Maven Artefakte direkt zu meinem lokalen Repository (.m2 / Repository). Nun installiert ich das Nexus Repository Manager und brauchen ihre Speicherung zu füllen, ohne erneut alle Artefakte zum Download bereit. Gibt es eine Möglichkeit, die Nexus-Repository mit der lokalen ein zu aktualisieren. Ich will nicht, kopieren Sie sie einfach auf, weil Nexus getrennte Artefakte über ihre öffentlichen Servern (Zentral, Codehaus, etc.) und die lokale Repository-Struktur nicht.

Update: Inzwischen kopierte ich die Artefakte aus dem lokalen Repository in dem Nexus Speicher (öffentlich-Repository). Ich kann über das Nexus Webapp die Artefakte sehen, aber Maven irgendwie kann nicht die Artefakte aus Nexus lösen. Muss ich sie besonders registrieren? Ich neu indiziert das öffentliche Repository und neu gestartet Nexus mehrmals -. Keine Änderungen

War es hilfreich?

Lösung

hat Nexus mehrere Arten von Repositories: gehosteten Repositories (diejenigen, die wirklich maven Artefakte speichern), Proxy-Repositories (das Umleitungsverkehr zu anderen Remote-Repositories, wenn ein Artefakt angefordert wird ), virtuelle Repositorys (nur ein Adapter von maven1 Repositories [aus dem Rahmen dieser Frage]). Sie können auch erstellen Repository Gruppen , die Artefakte aus jeder seiner Aggregate (die public Repository ist eine davon) dienen kann.

Darüber hinaus nexus teilt ihre Repositories nach seiner Verlagspolitik in Schnappschüsse und Veröffentlichungen . Die ehemaligen speichert Snapshot nur Artefakte; während letztere kann in der Theorie speichern, sowohl Schnappschüsse und Freigaben, aber es verhält sich eigentlich Buggy, wenn das Repo ist sehr groß und enthält Schnappschüsse.

Um Ihre Artefakte zu hosten müssen Sie:

Erstens: Teilen Sie Ihr lokales Repository in zwei: man die Schnappschüsse enthält, und eine andere, die Veröffentlichungen enthält. Nexus-Repository convertion Tool hilft Ihnen, wenn Ihr Repo sehr groß ist:

    <dependency>
        <groupId>org.sonatype.nexus.tools</groupId>
        <artifactId>nexus-repository-conversion-tool</artifactId> 
        <version>1.8.0.1</version>
        <classifier>cli</classifier> 
    </dependency>

downlaoded Einmal können Sie einfach java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget ausführen, wo Source das Verzeichnis, das das lokale Repository enthält, um den Bezug zu bewegen, und Target ist eine bestehende, leeren und beschreibbaren Verzeichnis, in dem die Umwandlung Werkzeug, um die gespaltet Repositories verlassen wird. Vorausgesetzt, dass Quellverzeichnis ist repository und Ziel ist temp, wird es schaffen temp/repository-snapshots und temp/repository-releases Verzeichnisse.

Zweitens: Ihr gespaltet repos zu Nexus bewegen. Und lassen Sie sie in ${NEXUS_HOME}/sonatype-work/nexus/storage, oder wo auch immer Ihre Nexus Installation konfiguriert, um die Repositories zu speichern.

Drittens: erstellen zwei gehosteten Repositories mit der gleichen ID wie die repos Sie im zweiten Schritt bewegt. (Im Beispiel repository-snapshots und repository-releases)

Wenn Ihr Repo nur Versionen enthalten würde, könnte Ihre Lösung gearbeitet haben, aber Sie werden einen weiteren Fehler begangen haben. Obwohl nexus speichert Artefakte für jedes Repository, die Speicherung von denen, die nicht repos gehostet werden, nur für den Zweck der Speicherung ist (wie im Fall des public Repository), möchten Sie kopiert Ihre Inhalte müssen eine Eins-zu arbeiten, um gehostet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top