Nexus hat mehrere Arten von Repositories: gehostete Repositories (diejenigen, die wirklich Maven-Artefakte speichern), Proxy-Repositories (die den Datenverkehr zu anderen entfernten Repositories umleiten, wenn ein Artefakt angefordert wird), virtuelle Repositories (ein bloßer Adapter von maven1-Repositories [außerhalb des Rahmens dieser Frage]). Sie können auch Repository-Gruppen die Artefakte von jedem ihrer Aggregate liefern kann (die public
Repository ist eines davon).
Darüber hinaus unterteilt nexus seine Repositories entsprechend seiner Veröffentlichungspolitik in Schnappschüsse y veröffentlicht . Ersteres speichert nur Snapshot-Artefakte, während letzteres theoretisch sowohl Snapshots als auch Releases speichern kann, aber es verhält sich tatsächlich fehlerhaft, wenn das Repo sehr groß ist und Snapshots enthält.
Um Ihre Artefakte zu hosten, müssen Sie:
Erstens: Teilen Sie Ihr lokales Repository in zwei Teile auf: einen, der die Snapshots enthält, und einen anderen, der die Releases enthält. Das Nexus-Repository-Konvertierungstool wird Ihnen helfen, wenn Ihr Repository 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>
Nach dem Herunterladen können Sie einfach Folgendes ausführen java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget
donde Source
ist das Verzeichnis, das das lokale Repository enthält, das nach nexus verschoben werden soll, und Target
ist ein vorhandenes, leeres und beschreibbares Verzeichnis, in dem das Konvertierungstool die aufgeteilten Repositories belässt. Vorausgesetzt, das Quellverzeichnis ist repository
und Ziel ist temp
erstellt sie temp/repository-snapshots
y temp/repository-releases
Verzeichnisse.
Zweitens: verschieben Sie Ihre gesplitteten Repos nach Nexus. Und lassen Sie sie in ${NEXUS_HOME}/sonatype-work/nexus/storage
oder wo auch immer Ihre Nexus-Installation so konfiguriert ist, dass sie die Repositories speichert.
Drittens: zwei erstellen gehostete Repositories mit der gleichen ID wie die Repos, die Sie im zweiten Schritt verschoben haben. (im Beispiel repository-snapshots
y repository-releases
)
Wenn Ihr Repo nur Releases enthalten würde, hätte Ihre Lösung funktionieren können, aber Sie hätten einen weiteren Fehler begangen. Obwohl nexus Artefakte für jedes Repository speichert, dient die Speicherung derjenigen, die keine gehosteten Repos sind, nur zu Caching-Zwecken (wie im Fall des public
Repository), müssten Sie Ihre Inhalte in ein gehostetes Repository kopieren, damit es funktioniert.