使用 Nexus3 API 如何获取存储库中的工件列表

Using the Nexus3 API how do I get a list of artifacts in a repository

我们正在从 Nexus Repository Manager 2.1.4 迁移到 Nexus 3.1.0-04。在版本 2 中,我们已经能够使用 API 通过存储库获取工件列表,但是我们正在努力寻找一种方法来使用 Nexus 3 API.

阅读 https://books.sonatype.com/nexus-book/reference3/scripting.html 第 16 章后,我们已经能够使用 groovy 脚本获取特定 blob 的工件信息,例如:

import org.sonatype.nexus.blobstore.api.BlobId

def properties = blobStore.blobStoreManager.get("default").get(new BlobId("7f6379d32f8dd78f98b5b181166703b6")).getProperties()
return [headers: properties.headers, metrics: properties.metrics]

但是,我们找不到迭代 blob 存储区内容的方法。我们可以获得一个 blob 存储对象:

blobStore.blobStoreManager.get("default")

但是 API 似乎没有为我们提供获取该存储中所有 blob 列表的方法。我们需要获取 blob 存储中的 blobID 列表。

有没有办法通过 Nexus 3 做到这一点 API?

我们的一位内部团队成员将其放在一起。它不使用 blobStore 但完成了我相信你正在尝试做的事情(以及更多):https://gist.github.com/kellyrob99/2d1483828c5de0e41732327ded3ab224

对于某些背景,将 blobStore 视为我们存储位的地方,没有关于它们的信息。 OrientDB 有 Component/Asset 条记录并存储了关于它们的所有信息。因此,您通常希望使用它而不是 blobStore 来获取资产信息。

迁移完成后,值得研究更新您的 Nexus 版本。

这样,您就可以使用 Nexus 的新 API(仍处于测试阶段)。它在 3.3.0 及更高版本上默认可用:http://localhost:8082/swagger-ui/

基本上,您从 URL 检索 json 输出:http://localhost:8082/service/siesta/rest/beta/assets?repositoryId=YOURREPO

一次只会显示 10 条记录,您必须使用提供的 continuationToken 通过调用以下方式为您的存储库请求下 10 条记录:http://localhost:8082/service/siesta/rest/beta/assets?continuationToken=46525652a978be9a87aa345bdb627d12&repositoryId=YOURREPO

这里有更多信息:http://blog.sonatype.com/nexus-repository-new-beta-rest-api-for-content