项目查询语言 - 获取项目名称和版本 - 基于组搜索



我想使用 AQL 获取特定组下的所有工件名称及其版本。您能否帮助 API 端点和 AQL。

在 GET REST API 下面,我得到了与组 com.load.runners 上的 runner 相关的版本。但我喜欢从 group com.load.runners 获取所有工件及其版本。

https://localhost/artifactory/api/search/versions?g=com.load.runners&a=runner&repos=maven

似乎没有直接的方法足够简单和高性能来使用 AQL.
BUT-
您可以做的是使用 Maven 布局的先验知识(Maven 工件如何在存储库中存储),使用 AQL 查询相关项目(文件),然后提取所需的信息。

依靠 Maven 布局中的*.pom文件(因为每个工件版本只有一个)(其中.替换为/):

<groupId>/<artifactId>/<version>/<artifactId>-<version>.pom

例如,项目com.load.runners:runners:1.0.0.pom文件的路径将为:

com/load/runners/runner/1.0.0/runner-1.0.0.pom

了解这些知识后,您可以运行以下查询:

POST /artifactory/api/search/aql
Content-Type: text/plain
items.find({
"repo": "maven",
"path": {
"$match": "com/load/runners/*"
},
"name": {
"$match": "*.pom"
}
}).include("path")

这将返回所有.pom文件的路径,而不返回文件名。例如:

{
"results": [
{
"path": "com/load/runners/runner/1.0.0"
},
{
"path": "com/load/runners/runner/2.0.0"
},
{
"path": "com/load/runners/other-runner/1.0.0"
},
...
]
}

所以现在,您所要做的就是从这些路径中提取信息 - 按/拆分,其中最后一部分是version(例如1.0.0),倒数第一的是artifactId(例如runner),其余的就是需要用.替换所有/groupId(例如com.load.runners)。请注意,您需要自行将版本聚合到项目。

最新更新