基于repos参数后的路径的JFrog artifactory搜索API

时间:2017-07-15 03:34:33

标签: artifactory

我正在使用Jfrog Artifactory存储maven类型的构建工件,我将存储库设置为$ARTIFACT_BASEURL/MYREPO/TeamName/API_Name/api-1.0.0.jar,其中MYREPO是实际存储库名称,TeamName/API_Name是其中的子文件夹存储api特定的工件。当我进行API构建并将工件推送到MYREPO中的各自文件夹时,一切都很好。

当我尝试使用JFrog搜索API在存储库中查找时,它不允许搜索API中的子文件夹/路径,就像我在下面提到的那样,

目前:curl -H X-JFrog-Art-Api:apikey “https://artifactory.company.com/artifactory/api/search/artifact?name=company&repos=MYREPO”

预期:Curl -H X-JFrog-Art-Api:apikey “https://artifactory.company.com/artifactory/api/search/artifact?name=company&repos=MYREPO/TeamName/API_Name”  要么 Curl -H X-JFrog-Art-Api:apikey “https://artifactory.company.com/artifactory/api/search/artifact?name=company&repos=MYREPO&path=TeamName/API_Name”

这样我就可以对存储在此路径中的二进制文件进行查找。

请建议/纠正我正确的流程

非常感谢!!

1 个答案:

答案 0 :(得分:3)

您提到您正在使用Artifactory来存储Maven工件。您申请工件的当前布局不是标准的Maven2 reposiotry layout。使用Maven类型的存储库时,Artifactory依赖于正确的布局,因此Artifactory搜索API将无法找到您的工件。
您当前正在尝试使用快速搜索API,该API仅允许按工件名称进行搜索。还有其他类型的搜索方法,例如GAVC search,它允许您也可以通过Maven groupId和版本进行搜索。
有几种选择:

(1)符合标准Maven repository layout并使用GAVC search
(2)使用generic Artifactory存储库并应用与您正在使用的当前布局匹配的custom layout。这将允许您在保持当前使用的布局的同时搜索工件 (3)保持当前的设置,并根据路径保留Artifactory Query Language(AQL)到search的工件,例如:

items.find({"repo": "myrepo"}, {"path" : "a/b/c"})