webentwicklung-frage-antwort-db.com.de

Nexus-Artefakt-Download mit CURL

Ich versuche, ein mit CURL auf Nexus hochgeladenes Artefakt herunterzuladen. Aber ich kann es nicht herunterladen. Die folgende Befehlsausführung über die Eingabeaufforderung lädt die erforderliche Zip-Datei nicht herunter und ich verwende das Nexus-Administratorkonto

curl -X GET -u userid:pwd "http://nexusserver:8081/nexus/service/local/artifact/maven/redirect?r=Repo_Name&g=GroupID&a=artifactID&v=LATEST&p=Zip" -O

Habe ich die URL richtig eingegeben? Ich habe versucht, die URL zu durchsuchen ( http: // nexusserver: 8081/nexus/service/local/artifact/maven/redirect? R = Repo_Name & g = GroupID & a = artifactID & v = LATEST & p = Zip ), aber HTTP 404 wurde nicht gefunden im Nexus Repository Manager. Ich benutze Nexus Version 3.0.2-02. Ich bin neu in Nexus und jede Hilfe wird sehr geschätzt.

Vielen Dank

2
Nagendira

In neueren Versionen von Nexus können Sie:

  1. Verwenden Sie curl, um über die neue REST-API nach einem Maven-Artefakt in Ihrem Nexus zu suchen
  2. Analysieren Sie die json-Antwort, um einen Download-Link zu extrahieren
  3. Verwenden Sie Curl, um das Artefakt herunterzuladen

Auf die Bash kommt es an:

$ curl -sSL -X GET -G "http://mynexus3.local/service/rest/v1/search/assets" \
  -d repository=maven-snapshots \
  -d maven.groupId=my.group.id \
  -d maven.artifactId=my-artifact \
  -d maven.baseVersion=1.0-SNAPSHOT \
  -d maven.extension=jar \
  -d maven.classifier=jar-with-dependencies \
  | grep -Po '"downloadUrl" : "\K.+(?=",)' \
  | xargs curl -fsSL -o my-artifact.jar

Der erste Block sucht nach Ihrem Artefakt und gibt etwas Ähnliches aus

{
  "items" : [ {
    "downloadUrl" : "http://mynexus3.local/repository/maven-snapshots/my/group/id/my-artifact/1.0-SNAPSHOT/my-artifact-1.0-20180821.085657-1-jar-with-dependencies.jar",
    "path" : "/my/group/id/my-artifact/1.0-SNAPSHOT/my-artifact-1.0-20180821.085657-1-jar-with-dependencies.jar",
    "id" : "foo",
    "repository" : "maven-snapshots",
    "format" : "maven2",
    "checksum" : {
      "sha1" : "bar",
      "md5" : "baz"
    }
  } ],
  "continuationToken" : null
}

Dann können Sie grep oder ähnliches verwenden, um die Download-URL zu extrahieren. Zum Schluss übergeben Sie die extrahierte URL erneut, um das Artefakt herunterzuladen. (getestet mit Nexus 3.13)

1
fab

Die Artefakte befinden sich jetzt unter URLs, die den folgenden ähneln:

http: // nexusserver: 8081/repository/ {repositoryname} /

Mit dieser und einigen Kenntnissen der Maven-Pfade können Sie zu Artefakten gelangen.

Die von Ihnen verwendete URL funktioniert jedoch noch nicht so gut, da dies ein REST API-Aufruf war, den wir vorerst entfernt haben.

In neueren Versionen von Nexus Repository haben wir die Anfänge unserer REST-API. Wenn Sie ein Upgrade auf mindestens 3.3 durchführen (und 3.5, weil es jetzt herauskommt), können Sie auf die Anfänge dieser Arbeit zugreifen:

http: // nexusserver: 8081/swagger-ui/

Diese Beta-Funktionalität wird sich wahrscheinlich ändern, auch wenn Sie etwas schreiben und es in einer neueren Version kaputt geht. Sie müssen sie reparieren, aber Sie können dort nachsehen, ob es einige Endpunkte gibt, die Ihnen helfen.

Sie möchten wahrscheinlich einen Blick auf: http: // localhost: 8081/swagger-ui/#!/Search/search werfen.

0
DarthHater

Tatsächlich hat Sonatype sich fulminant dazu entschlossen, die REST - API auf eine Weise zu ändern, die von Nexus2 zu Nexus3 völlig inkompatibel ist - zur Freude der Systemverwalter. Daher ist/service/local/artifact/maven/in Nexus3 nicht mehr verfügbar.

Eine alternative Möglichkeit - unabhängig von der Nexus-Version - ist die Verwendung von Maven:

mvn -Dmaven.wagon.http.ssl.insecure = true org.Apache.maven.plugins: maven-dependency-plugin: 3.0.1: copy -Dartifact = mvngroup: mvnartifactid: mvnversion: mvnpackaging -DoutputDirectory =. /

wo "mvnpackaging" jar, war, zip sein kann ....

0