Nexusインストールを最新リリース(3.x)にアップグレードしました。特定のスナップショットアーティファクトの最新バージョンを取得する方法はありますか? Nexus 2には、もうサポートされないNice APIがありました。
同じ質問(ただし古いバージョン)はここで回答されています: Sonatype Nexus REST Api fetch latest build version
どんなアイデアでも大歓迎です。
ベスト、ダニエル
Nexus 2には、もうサポートされないNice APIがありました。
これらを参照しているようです:
/service/local/artifact/maven/content
/service/local/artifact/maven/redirect
X、y、zが推測される最新のx.y.z-SNAPSHOTバージョンを探す場合は、Nexusにこの機能はありませんでした(プラグインでのみ機能しました)。
これは真実ではありません。最新、リリース、またはスナップショットの基本バージョンを指定できることを明確に示している次の記事を参照してください。
可能ですが、ワンライナーではできません。
はい-1行のコマンドを使用してアーティファクトをフェッチする artifact-resolver などの便利なツールがない限り。
冗談です。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"
x.y.z-SNAPSHOT
を要求すると、デフォルトで最新のx.y.z-timestamp
スナップショットバージョンがダウンロードされます。追加の作業は必要ありません
x
、y
、z
が推測される最新の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"])'
それが役に立てば幸い
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/download
とrepository
、group
およびname
引数。 version
で並べ替えると、最新のタイムスタンプ付きのスナップショットが得られます。
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}"
可能ですが、ワンライナーではできません。後のスナップショットアーティファクトごとにmaven-metadata.xmlをフェッチする必要があります(マルチモジュールプロジェクトには、親を含むモジュールごとに異なるタイムスタンプがあることに注意してください)。
xlstproc を使用して関連する変数を抽出しているため、mavenやivyなどのヘビー級のツールを使用せずにコマンドラインから実行して解決を行うことができます。
curl
、jq
、sort
および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
POSTリクエストでこの特定の問題を解決する、Nexusにアップロードできるグルーヴィーなスクリプトをまとめました。
あなたはここでスクリプトといくつかの使用方法を見つけることができます: https://github.com/rbjorklin/resolve-latest-nexus-artifact
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