web-dev-qa-db-ja.com

Sonatype Nexus 3-最新のスナップショットを取得

Nexusインストールを最新リリース(3.x)にアップグレードしました。特定のスナップショットアーティファクトの最新バージョンを取得する方法はありますか? Nexus 2には、もうサポートされないNice APIがありました。

同じ質問(ただし古いバージョン)はここで回答されています: Sonatype Nexus REST Api fetch latest build version

どんなアイデアでも大歓迎です。

ベスト、ダニエル

13
Daniel

Nexus 2には、もうサポートされないNice APIがありました。

これらを参照しているようです:

/service/local/artifact/maven/content
/service/local/artifact/maven/redirect

X、y、zが推測される最新のx.y.z-SNAPSHOTバージョンを探す場合は、Nexusにこの機能はありませんでした(プラグインでのみ機能しました)。

これは真実ではありません。最新、リリース、またはスナップショットの基本バージョンを指定できることを明確に示している次の記事を参照してください。

https://support.sonatype.com/hc/en-us/articles/213465488-How-can-I-retrieve-a-snapshot-if-I-don-t-know-the-exact-ファイル名-

可能ですが、ワンライナーではできません。

はい-1行のコマンドを使用してアーティファクトをフェッチする artifact-resolver などの便利なツールがない限り。

6
Peter Lynch

冗談です。Nexus3にはREST APIがありません。

私の問題を軽減するハックを見つけました。 ansibleには、Nice maven_artifact モジュールがあり、なんとかして最新のスナップショットを把握できることがわかります。また、ローカルでansibleを実行できます。したがって、次のようになります。

ansible all -i localhost, -c local -m maven_artifact -a "repository_url=https://my-nexus/repository/maven-snapshots/ group_id=com.whatever artifact_id=my-artifact version=2.0-SNAPSHOT dest=./my-artifact.jar"
3
Kevin Pauli

x.y.z-SNAPSHOTを要求すると、デフォルトで最新のx.y.z-timestampスナップショットバージョンがダウンロードされます。追加の作業は必要ありません

xyzが推測される最新のx.y.z-SNAPSHOTバージョンを検索する場合- Nexusにはこの機能がありませんでした (プラグインでのみ機能しました)。そして、これには良いユースケースはないと思います。これが必要な場合は、おそらく何かが間違っています。常に特定のバージョンで作業する必要があります。実際、最初の機能でさえ、私は良いユースケースを考えることができません。

最近、ネクサスバージョン3.12.1-01で同じ問題に直面したため、最新のスナップショットを直接取得するためのREST APIはありません

python one linerを使用して問題を解決することができました

JSON_RESPONSE=$(curl -u un:pw -X GET "http://nexus-Host/nexus/service/rest/beta/search/assets?maven.groupId=sample.group.id&maven.artifactId=sample&maven.extension=jar" -H  "accept: application/json")

echo $JSON_RESPONSE | python -c 'import sys, json; lines = json.load(sys.stdin)["items"]; sortedlines = sorted(lines, key=lambda k: k["downloadUrl"], reverse=True); print(sortedlines[0]["downloadUrl"])'

それが役に立てば幸い

1
didlich

2019年4月現在IS a REST Sonatype Nexus 3のAPIで最新のアーティファクトにアクセス

ドキュメントはこちら

http://community.sonatype.com/t/nxrm-3-16-rest-search-and-filtering-enhancements/1586

このエンドポイントを使用/service/rest/v1/search/assets/downloadrepositorygroupおよびname引数。 versionで並べ替えると、最新のタイムスタンプ付きのスナップショットが得られます。

https://nexus.blahblah.com/service/rest/v1/search/assets/download?repository=maven-snapshots&group=com.my.company&name=myArtefact&sort=version&direction=desc

0
user1717259

Curlでダウンロードできます

curl -L --header 'Accept: application/json' "https://${NEXUS_URL}/service/rest/beta/search/assets/download?repository=${NEXUS_REPO_NAME}&maven.groupId=${MVN_GROUP_ID}&maven.artifactId=${MVN_ARTIFACT_ID}&maven.baseVersion=${APP_VERSION}&maven.extension=${MVN_EXTENSION}"
0
Martin Hatas

可能ですが、ワンライナーではできません。後のスナップショットアーティファクトごとにmaven-metadata.xmlをフェッチする必要があります(マルチモジュールプロジェクトには、親を含むモジュールごとに異なるタイムスタンプがあることに注意してください)。

xlstproc を使用して関連する変数を抽出しているため、mavenやivyなどのヘビー級のツールを使用せずにコマンドラインから実行して解決を行うことができます。

0
Jon Freedman

curljqsortおよびtailを使用してワンライナーをバッシュします。

NEXUS_URL=https://your-nexus.com
MAVEN_REPO=maven-snapshots
GROUP_ID=...
ARTIFACT_ID=...
VERSION=2.0.1-SNAPSHOT
FILE_EXTENSION=jar

download_url=$(curl -X GET "${NEXUS_URL}/service/rest/v1/search/assets?repository=${MAVEN_REPO}&maven.groupId=${GROUP_ID}&maven.artifactId=${ARTIFACT_ID}&maven.baseVersion=${VERSION}&maven.extension=${FILE_EXTENSION}" -H  "accept: application/json"  | jq -rc '.items | .[].downloadUrl' | sort | tail -n 1)

wget $download_url
0
barth

POSTリクエストでこの特定の問題を解決する、Nexusにアップロードできるグルーヴィーなスクリプトをまとめました。

あなたはここでスクリプトといくつかの使用方法を見つけることができます: https://github.com/rbjorklin/resolve-latest-nexus-artifact

0
rbjorklin

OSS 3.21.2-03を使用して、Zip拡張ファイルで次のURLを使用して最新のスナップショットを取得しました。

{nexus_Host}/service/rest/v1/search/assets/download?sort=version&repository={repository_name}&group={group_id}&name={artifact-id}&maven.extension=Zip
0
seckin