我试图从Java客户端使用Artifactory REST API(特别是Artifactory Query Language),但网站上的示例是用Groovy(片段)编写的,并不是立即明确Java客户端的工作原理。
非常感谢使用REST API(或Artifactory Java Client API)执行AQL查询的Java示例。
对于它的价值,这里是Artifactory查询语言网站的链接...
https://www.jfrog.com/confluence/display/RTF/Artifactory+Query+Language
答案 0 :(得分:7)
Artifactory Java Client本身不支持AQL查询。 但是,您可以使用通用的Rest调用接口provides来创建指向AQL API ArtifactoryRequest的endpoint。
您链接的wiki中的示例不在Groovy中,它们使用AQL语法 - 您只需构建一个您喜欢的任何查询的字符串并将其作为请求的主体发送 - 大致类似于
String aqlQuery = "items.find({\"name\": {\"$match\" : \"*test.*\"}})";
Artifactory artifactory = Artifactory.create(url, userName, password);
ArtifactoryRequest aqlRequest = new ArtifactoryRequestImpl()
.method(ArtifactoryRequest.Method.POST)
.apiUrl("/api/search/aql")
.requestBody(aqlQuery);
//Parse this string as json
String aqlResponse = artifactory.restCall(aqlRequest);
响应是您可以解析并处理的JSON - 请查看我提供的API链接中的示例。
答案 1 :(得分:1)
@fundeldman感谢您提出上述答案。经过一些小的调整,代码现在正在运行。这是最新最好的......
String aqlQuery = "items.find({\"name\": {\"$match\" : \"*rup-receipt*\"}}).include(\"repo\", \"path\", \"name\")";
Artifactory artifactory = ArtifactoryClient.create(artifactoryUrl, username, password);
ArtifactoryRequest aqlRequest = new ArtifactoryRequestImpl()
.method(ArtifactoryRequest.Method.POST)
.apiUrl("api/search/aql")
.requestType(ArtifactoryRequest.ContentType.TEXT)
.responseType(ArtifactoryRequest.ContentType.JSON)
.requestBody(aqlQuery);
Map<String, ?> aqlResponse = artifactory.restCall(aqlRequest);