Ich habe ein Nicht-Java-Projekt, das ein versioniertes Build-Artefakt erzeugt, und ich möchte dieses in ein Nexus-Repository hochladen. Da das Projekt kein Java ist, wird Maven nicht für Builds verwendet. Und ich möchte lieber keine Maven / POM-Dateien einführen, nur um Dateien in Nexus zu bekommen.
Die Links in Blogs zur Nexus REST-API enden alle an einer Anmeldewand, ohne dass ich einen Link zum Erstellen eines Benutzers sehen kann.
Was ist der beste (oder vernünftigste) Weg, um Build-Artefakte ohne Maven in ein Nexus-Repository hochzuladen? "bash + curl" wäre toll oder sogar ein Python-Skript.
Antworten:
Haben Sie darüber nachgedacht, die Maven-Befehlszeile zum Hochladen von Dateien zu verwenden?
Dadurch wird automatisch der Maven POM für das Artefakt generiert.
Aktualisieren
Der folgende Sonatype-Artikel besagt, dass das Maven-Plugin "Deploy-File" die einfachste Lösung ist, bietet aber auch einige Beispiele für die Verwendung von Curl:
https://support.sonatype.com/entries/22189106-How-can-I-programatisch-upload-an-artifact-into-Nexus-
quelle
Curl verwenden:
Sie können hier sehen, was die Parameter bedeuten: https://support.sonatype.com/entries/22189106-How-can-I-programatisch-upload-an-artifact-into-Nexus-
Damit die Berechtigungen für diese Funktion funktionieren, habe ich eine neue Rolle in der Administrator-GUI erstellt und dieser Rolle zwei Berechtigungen hinzugefügt: Artefakt-Download und Artefakt-Upload. Die Standardrolle "Repo: Alle Maven-Repositorys (Vollzugriff)" - reicht nicht aus. Sie finden dies nicht in der REST-API-Dokumentation, die im Lieferumfang des Nexus-Servers enthalten ist, sodass sich diese Parameter möglicherweise in Zukunft ändern.
In einem Sonatype JIRA-Problem wurde erwähnt, dass sie "die REST-API (und die Art und Weise, wie ihre Dokumentation generiert wird) in einer kommenden Version, höchstwahrscheinlich später in diesem Jahr, überarbeiten werden".
quelle
Sie müssen diese Befehle nicht verwenden. Sie können das Nexus-Webinterface direkt verwenden, um Ihre JAR mithilfe von GAV-Parametern hochzuladen.
Es ist also sehr einfach.
quelle
Artifact Upload
. Leider konnte ich in den Dokumenten, in denen dies erwähnt wurde , nichts finden ... (Bearbeiten: Ich verstehe, Ed, ich habe bereits darauf hingewiesen )Sie können dies ABSOLUT tun, ohne MAVEN zu verwenden. Ich persönlich benutze den NING HttpClient (v1.8.16, um Java6 zu unterstützen).
Aus irgendeinem Grund macht es Sonatype unglaublich schwierig, die richtigen URLs, Header und Nutzdaten herauszufinden. und ich musste den Verkehr schnüffeln und raten ... Es gibt einige kaum nützliche Blogs / Dokumentationen, die jedoch entweder irrelevant
oss.sonatype.org
sind oder auf XML basieren (und ich fand heraus, dass sie nicht einmal funktionieren). Mist Dokumentation von ihrer Seite, IMHO, und hoffentlich zukünftige Suchende können diese Antwort nützlich finden. Vielen Dank an https://stackoverflow.com/a/33414423/2101812 für ihren Beitrag, der sehr geholfen hat.Wenn Sie eine andere Version als veröffentlichen
oss.sonatype.org
, ersetzen Sie sie einfach durch den richtigen Host.Hier ist der (CC0-lizenzierte) Code, den ich geschrieben habe, um dies zu erreichen. Wo
profile
ist Ihr Sonatyp / Nexus-Profil? ID (wie4364f3bbaf163
) undrepo
(wiecomdorkbox-1003
) werden aus der Antwort analysiert, wenn Sie Ihr erstes POM / Jar hochladen.Repo schließen:
Repo fördern:
Drop Repo:
Signatur-Trottel löschen:
Datei-Uploads:
EDIT1:
So erhalten Sie die Aktivität / den Status für ein Repo
quelle
Die Anrufe, die Sie gegen Nexus tätigen müssen, sind REST-API-Anrufe.
Das Maven-Nexus-Plugin ist ein Maven-Plugin, mit dem Sie diese Anrufe tätigen können. Sie können einen Dummy-Pom mit den erforderlichen Eigenschaften erstellen und diese Aufrufe über das Maven-Plugin tätigen.
Etwas wie:
Angenommene Dinge:
Letztendlich werden lediglich REST-Aufrufe in Nexus erstellt. Es gibt eine vollständige Nexus REST-API, aber ich hatte wenig Glück, eine Dokumentation dafür zu finden, die sich nicht hinter einer Paywall befindet. Sie können den Debug-Modus für das obige Plugin aktivieren und es jedoch mithilfe von herausfinden
-Dnexus.verboseDebug=true -X
.Sie können theoretisch auch in die Benutzeroberfläche gehen, das Firebug Net-Bedienfeld aktivieren, POSTs suchen / warten und dort auch einen Pfad ableiten.
quelle
für diejenigen, die es in Java benötigen, mit Apache httpcomponents 4.0:
quelle
In Ruby https://github.com/RiotGames/nexus_cli Ein CLI-Wrapper für Sonatype Nexus-REST-Aufrufe.
Anwendungsbeispiel:
Die Konfiguration erfolgt über die
.nexus_cli
Datei.quelle
Sie können die direkte Bereitstellungsmethode auch mit curl verwenden. Sie benötigen kein POM für Ihre Datei, aber es wird auch nicht generiert. Wenn Sie eines möchten, müssen Sie es separat hochladen.
Hier ist der Befehl:
quelle
Wenn Sie eine praktische Befehlszeilenschnittstelle oder Python-API benötigen, schauen Sie sich die Repository- Tools an
Mit ihm können Sie Artefakte mit Befehl auf nexus hochladen
Damit es funktioniert, müssen Sie auch einige Umgebungsvariablen festlegen
quelle
Sie können die Artefakte manuell hochladen, indem Sie auf dem Nexus-Server auf die Schaltfläche Artefakte hochladen klicken und die erforderlichen GAV-Eigenschaften für das Hochladen angeben (im Allgemeinen ist dies die Dateistruktur zum Speichern des Artefakts).
quelle
Für neuere Versionen von Nexus OSS (> = 3.9.0)
https://support.sonatype.com/hc/en-us/articles/115006744008-How-can-I-programmatisch-upload-files-into-Nexus-3-
Beispiel für die Versionen 3.9.0 bis 3.13.0:
quelle
@Adam Vandenberg Für Java-Code zum POST an Nexus. https://github.com/manbalagan/nexusuploader
quelle
Sie können stattdessen Curl verwenden.
quelle