我正在使用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”
这样我就可以对存储在此路径中的二进制文件进行查找。
请建议/纠正我正确的流程
非常感谢!!
答案 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"})