web-dev-qa-db-ja.com

CURLを使用したNexusアーティファクトのダウンロード

CURLを使用してネクサスにアップロードされたアーティファクトをダウンロードしようとしています。しかし、それをダウンロードすることはできません。コマンドプロンプトから以下のコマンドを実行しても必要なZipファイルがダウンロードされず、Nexus管理者アカウントを使用しています

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

URLを正しく作成しましたか? URL( http:// nexusserver:8081/nexus/service/local/artifact/maven/redirect?r = Repo_Name&g = GroupID&a = artifactID&v = LATEST&p = Zip )を参照しようとしましたが、HTTPを取得しました404 Nexusリポジトリマネージャで見つかりません。 Nexusバージョン3.0.2-02を使用しています。私はネクサスに不慣れで、どんな助けでも大歓迎です。

ありがとう

6
Nagendira

新しいバージョンのnexusでは、次のことができます。

  1. Curlを使用して、新しいREST-APIを介してネクサスでMavenアーティファクトを検索します
  2. Json-responseを解析してダウンロードリンクを抽出します
  3. Curlを使用してアーティファクトをダウンロードする

Bashでは、これは次のように要約されます。

$ 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

最初のブロックはアーティファクトを検索し、次のようなものを出力します

{
  "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
}

次に、grepなどを使用して、ダウンロードURLを抽出します。最後に、抽出したURLをcurlに渡して、アーティファクトをダウンロードします。 (Nexus 3.13でテスト済み)

9
Fabian Braun

実際、Sonatypeは、システムミニストレーターの喜びのために、REST APIをNexus2からNexus3に完全に互換性のない方法で変更することを見事に決定しました。そのため、/ service/local/artifact/maven /は使用できなくなりましたNexus3で。

別の方法-Nexusのバージョンとは関係なく-は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 =。/

ここで、「mvnpackaging」はjar、war、Zipなどです。

4

次のエンドポイントを使用できます。
GET /service/rest/v1/search/assets/download
それは次のことを行います:
このエンドポイントは、1つのアセットを検索して、リクエストをそのアセットのdownloadUrlにリダイレクトするように特別に設計されています

例:
curl -u admin:admin123 -X GET 'http://localhost:8081/service/rest/v1/search/assets?group=org.osgi&name=org.osgi.core&version=4.3.1&maven.extension=jar&maven.classifier

1
nicolimo86

アーティファクトは次のようなURLの下にあります。

http:// nexusserver:8081/repository / {リポジトリ名} /

それとMavenパスのいくつかの知識を使用して、アーティファクトに到達できます。

REST API呼び出しが当面削除したため、使用しているURLもまだ機能しません。

Nexusリポジトリの新しいバージョンには、REST APIの始まりがあります。最低でも3.3(および3.5は現在リリースされていないため)にアップグレードすると、この作品:

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

これはベータ版の機能であるため、変更される可能性があります。つまり、何かを記述して新しいバージョンで壊れた場合は、修正する必要がありますが、そこで役立つエンドポイントがあるかどうかを確認することができます。

あなたはおそらく見てみたいと思う: http:// localhost:8081/swagger-ui /#!/ search/search

0
DarthHater