Nexus3API如何从groupId和artifactId搜索组件

Nexus3API如何从groupId和artifactId搜索组件,api,groovy,nexus,Api,Groovy,Nexus,我搜索从groupId和artifactid请求组件或资产的方法 文档提供了有关如何创建此请求的任何帮助 我帮了大忙 不幸的是,这还不足以解决我的需要,我尝试创建查询,从groupId和artifactid请求组件,如下所示: Query.builder().where('group = ').param('###').and('name = ').param('###').and('version = ').param('###).build() 上次我播放脚本时,它抛出了java.lang

我搜索从
groupId
artifactid
请求组件或资产的方法

文档提供了有关如何创建此请求的任何帮助

我帮了大忙

不幸的是,这还不足以解决我的需要,我尝试创建查询,从
groupId
artifactid
请求组件,如下所示:

Query.builder().where('group = ').param('###').and('name = ').param('###').and('version = ').param('###).build()
上次我播放脚本时,它抛出了
java.lang.StackOverflowerError
。在增加记忆后,我得到了同样的结果。似乎有太多的组件要返回,但在我的nexus存储库中,只有一个组件具有这样的组、名称和版本

这个查询有什么问题

是否有人克服了这个困难(nexus2和RESTAPI非常容易!)并用groovy脚本检索组件信息

事实上,我的需要是: 我想按组和工件检索组件的最新发布版本及其日期。 我肯定会保留groovyapi选项

我发现的一种方法是使用extdirectapi。nexus前端使用此“rest”api与后端通信。没有任何文件

我调用extdirectapi,以按组和工件检索组件中的所有版本。我解析结果以获得发布(快照和发布)的最后版本。 这并不是很好,因为这个调用检索所有存储库上的所有版本,可能会非常庞大

另一个对extdirect api的调用,从上一个发布版本的组件id中查找发布日期


我希望有一天nexus会发布一个有用的RESTAPI的官方文档。

这是我成功上传并使用的脚本。您可以轻松地将版本添加到请求中—例如,参数为“snapshots lib,com.m121.somebundle,somebundle,7.2.1-SNAPSHOT,all”。如您所见,我决定在本地过滤序列,因为没有找到在查询版本参数中指定的方法

{
“名称”:“列表组”,
“类型”:“groovy”,
“内容”:“导入org.sonatype.nexus.repository.storage.Query;
导入org.sonatype.nexus.repository.storage.StorageFacet;
导入groovy.json.JsonOutput;
def repositoryId=args.split(',')[0];
def groupId=args.split(',')[1];
def artifactId=args.split(',')[2];
def baseVersion=args.split(',')[3];
def latestOnly=args.split(',')[4];
def repo=repository.repositoryManager.get(repositoryId);
StorageFacet StorageFacet=repo.facet(StorageFacet);
def tx=storageFacet.txSupplier().get();
tx.begin();
def components=tx.findComponents(Query.builder().where('group=').param(groupId.)和('name=').param(artifactId.build(),[repo]);
def find=components.findAll{it.attributes().child('maven2').get('baseVersion')==baseVersion}.collect{def version=it.attributes().child('maven2').get('version');\“${version}”;
//found=found.unique().sort();
def latest=found.isEmpty()?found:found.last();
tx.commit();
def result=latestOnly==“latest”?JsonOutput.toJson(latest):JsonOutput.toJson(find);
返回结果;”

}
param('####).build()
-缺少单引号?错误仅出现在代码说明中。真正的代码没有缺少引号。