首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sonatype Nexus search api不会返回所有工件

Sonatype Nexus search api不会返回所有工件
EN

Stack Overflow用户
提问于 2019-12-05 11:52:45
回答 1查看 2.4K关注 0票数 0

我们使用sonatype nexus 3.14.0-04存储所有工件,并使用Jenkins作为CI/CD。我最近引入了快照支持。在Jenkins中,我使用下面的groovy脚本获取所有工件版本并填充活动选项下拉列表:

代码语言:javascript
运行
复制
#!/usr/bin/env  groovy
import groovy.json.JsonSlurper

def source = "release"
def url = "http://<<nexus-host>>/service/rest/v1/search?repository=maven-releases&maven.groupId=com.xyz&maven.artifactId=woof&maven.extension=war"
Set<String> versions = new HashSet<>();
def continuationToken = null
def count = 0

def url1 = url
while (true) {
    def xml = url1.toURL().text
    JsonSlurper parser = new groovy.json.JsonSlurper()
    Map parsedJson = parser.parseText(xml)
    def rawVer = parsedJson.items.version
    continuationToken = parsedJson.continuationToken

    if (continuationToken != null) {
        url1 = url + "&continuationToken=" + continuationToken
    }

    if (source.equalsIgnoreCase('snapshot')) {

        Set<String> modVersion = new HashSet<>()
        for (def item : rawVer) {
            modVersion.add(item.split("-").getAt(0) + "-SNAPSHOT")
        }

        versions.addAll(modVersion)
    } else {
        versions.addAll(rawVer)
    }

    if (continuationToken == null || count > 5) {
        break;
    }
}

return versions.sort().reverse()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 15:59:25

nexus搜索端点使用分页策略返回结果。如果全局结果包含多个页面,则当前结果将包含一个continuationToken,您可以在下一个查询中使用该use来获取下一个结果页面。

如果搜索返回的结果多于页面大小,则需要多次调用搜索url以获取Jenkins脚本中的所有结果(即,直到continuationToken为空)。

Ref:Nexus Search API endpoint doc (也可以在nexus中的swagger-ui视图中引用)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59187989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档