在Artifactory中过滤基于属性的搜索

时间:2014-03-31 15:31:54

标签: artifactory

我正在寻找使用Artifactory属性搜索

https://www.jfrog.com/confluence/display/RTF/Artifactory+REST+API#ArtifactoryRESTAPI-ArtifactSearch%28QuickSearch%29

目前,这将拉出json列出与我的属性匹配的任何工件。

"results" : [
{
    "uri": "http://localhost:8080/artifactory/api/storage/libs-release-local/org/acme/lib/ver/lib-ver.pom"
},{
    "uri": "http://localhost:8080/artifactory/api/storage/libs-release-local/org/acme/lib/ver2/lib-ver2.pom"
}
]

我需要能够过滤我得到的工件,因为我只对某个分类器感兴趣。 GAVC搜索具有& c =分类器

如果通过界面

无法实现,我可以在代码中执行此操作

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

自Artifactory 3.5中发布AQL以来,它现在是查找工件的官方和首选方式。

以下是与您的需求类似的示例:

items.find
(
    {
            "$and":[
                            {"@license":{"$eq":"GPL"}},
                            {"@version":{"$match":"1.1.*"}},
                            {"name":{"$match":"*.jar"}}
                   ]
    }
)

要在Artifactory中运行查询,请将查询复制到文件并将其命名为aql.query

从包含aql.query文件的目录运行以下命令

curl -X POST -uUSER:PASSWORD'http://HOST:PORT/artifactory/api/search/aql'-Taql.query

不要忘记将模板(USER,PASSWORD,HOST和PORT)替换为实际值。

在示例中    前两个条件用于按属性过滤项目。    第三个标准按工件名称过滤项目(在我们的示例中,工件名称应以.jar结尾)

有关如何编写AQL查询的更多详细信息,请参阅AQL


旧答案

目前,您无法将属性搜索与GAVC搜索结合使用。 所以你有两个选择:

  • 执行其中一个(以较准确的结果为准)然后通过脚本过滤客户端上的JSON列表
  • 使用execution user plugin编写将执行搜索的the Searches service,然后在服务器端过滤结果。

当然,后者更可取。