如何列出Nexus3资源库中的所有资产(groupId,name,size)?

问题描述 投票:0回答:1

我知道这在OrientDB中很容易做到。

select * from asset where bucket.repository_name = 'my-repo-release';

但我需要远程获取这个列表,而不是在本地的orientdb控制台,所以我需要一个groovy脚本,但我到处都找不到。

sql groovy nexus nexus3
1个回答
0
投票

下面是示例脚本。https:/github.comsonatype-nexus-communitynexus-scripting-examples。

它可以在 "nexus-script-example "项目中找到。

import org.sonatype.nexus.repository.storage.Asset
import org.sonatype.nexus.repository.storage.Query
import org.sonatype.nexus.repository.storage.StorageFacet

import groovy.json.JsonOutput
import groovy.json.JsonSlurper

def assetListFile = new File('/tmp/assetListFile.txt')
def request = new JsonSlurper().parseText("{\"repoName\":\"maven-releases\",\"startDate\":\"2016-01-01\"}")

assert request.repoName: 'repoName parameter is required'
assert request.startDate: 'startDate parameter is required, format: yyyy-mm-dd'

log.info("Gathering Asset list for repository: ${request.repoName} as of startDate: ${request.startDate}")

def repo = repository.repositoryManager.get(request.repoName)
StorageFacet storageFacet = repo.facet(StorageFacet)
def tx = storageFacet.txSupplier().get()

try {
    tx.begin()
    Iterable<Asset> assets = tx.findAssets(Query.builder().where('last_updated > ').param(request.startDate).build(), [repo])

    assets.each {Asset asset ->
        assetListFile << asset.name() + '\n'
    }
}
finally {
    tx.close()
}

资产(对象 org.sonatype.nexus.repository.storage.Asset)的所有属性都可以访问,包括 asset.size()。

© www.soinside.com 2019 - 2024. All rights reserved.