从 Nexus3 下载单个/最新资产(JAR)
Posted
技术标签:
【中文标题】从 Nexus3 下载单个/最新资产(JAR)【英文标题】:Download single/latest asset(JAR) from Nexus3 【发布时间】:2018-07-25 13:52:06 【问题描述】:我正在尝试从我的本地 Nexus 存储库下载最新/最新的资产 (JAR)。我正在使用 Nexus Swagger UI。它有一个 GET 方法来下载,
GET /beta/search/assets/download
问题是..我在 repo 中有很多资产,它给出了一个错误,
Search returned multiple assets, please refine search criteria to find a single asset
如何优化我的搜索并获取最新/最新的 JAR?
仅供参考.. 目前,我在回购中有 20 多个资产,下面我展示了其中的两个..
"items": [
"downloadUrl": "http://localhost:8081/repository/snapshot/com/openshift/test/openshift-jenkins/0.0.1-SNAPSHOT/openshift-jenkins-0.0.1-20180214.211251-17.jar",
"path": "com/openshift/test/openshift-jenkins/0.0.1-SNAPSHOT/openshift-jenkins-0.0.1-20180214.211251-17.jar",
"id": "c25hcHNob3Q6ZTAxODhlZDA3MjhmYTY4ZmIwOGZkYzAyYTliZTQ4Zjg",
"repository": "snapshot",
"format": "maven2",
"checksum":
"sha1": "53cdfcf964d0edd5fc6fdefa457e700eff47a1ca",
"md5": "d0c82971b82957728d0b4c858150d56c"
,
"downloadUrl": "http://localhost:8081/repository/snapshot/com/openshift/test/openshift-jenkins/0.0.1-SNAPSHOT/openshift-jenkins-0.0.1-20180214.210246-15.jar",
"path": "com/openshift/test/openshift-jenkins/0.0.1-SNAPSHOT/openshift-jenkins-0.0.1-20180214.210246-15.jar",
"id": "c25hcHNob3Q6MjEwMzFkZmFmNDVlNWI1ODgwZTUwYjE5M2Y5NGVkNjk",
"repository": "snapshot",
"format": "maven2",
"checksum":
"sha1": "b041f4b1e6bcb81366a72635f6c576ae46a83ec8",
"md5": "af970e3e66c9cd20ff66f1074da04c21"
],
"continuationToken": null
【问题讨论】:
这是使用 Nexus API 3.16 实现的。见my edited answer below。 【参考方案1】:您可以使用工件重定向而不是使用搜索(使用 curl -L 能够跟踪重定向):/artifact/maven/redirect
curl -L "http://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST" -o log4j.jar
但是,它might not be available for Nexus 3 yet。
在这种情况下,您需要download and parse first the maven-metadata.xml
。
您可以从那里提取最新的标签。
自 2018 年 2 月起,NEXUS-12469 提出了同样的问题,并引用了 NEXUS-14407:REST Search & Download by 'Latest',于 2019 年第四季度 3.16 发布。
扩展搜索和下载服务,以便用户可以按“最新版本”对搜索结果进行排序。
Examples:
http://localhost:8081/service/rest/v1/search/assets/download?repository=maven-central&group=junit&name=junit&sort=version&prerelease=false
curl -L -o myartifact.tar.gz -u xxx:xxx "http://localhost:8080/service/rest/v1/search/assets/download?sort=version&direction=desc&repository=maven-snapshots&maven.groupId=bla.bla.bla&maven.artifactId=bla-bla&maven.extension=tar.gz
所以结合:
API 端点assets/download
sort=version
修饰符
【讨论】:
@John Seen 请注意,您不仅需要使用重定向 URL,还需要在 URL 中将版本指定为 LATEST。【参考方案2】:使用 v3(确切地说是 3.17.0)中的 REST API 可以获取任何 lib 的最新版本:
/service/rest/v1/search/assets/download?sort=version&maven.artifactId=artifactId&maven.groupId=groupId&maven.extension=jar
【讨论】:
以上是关于从 Nexus3 下载单个/最新资产(JAR)的主要内容,如果未能解决你的问题,请参考以下文章