我们使用 Jenkins Maven 构建将工件及其构建信息发布到 Artifactory,并且可以使用 AQL 查询已发布工件的依赖项。是否可以指定 AQL 来为我们提供依赖项的实际工件 repo/path/name?
查询“artifact.module.dependency”仅返回“dependency”直接支持的字段(https://www.jfrog.com/confluence/display/RTF/Artifactory+Query+Language#ArtifactoryQueryLanguage-EntitiesandFields)。查询“artifact.module.dependency.item”只会模仿我们询问的原始工件。
AQL:
items.find({
"repo":{"$eq":"isone-app-staging"},
"path":{"$match":"com/isone/sms/packages/package-batchjobs/40-dry-run-4"},
"name":{"$match":"package-batchjobs-40-dry-run-4.pom"}
}).include("artifact.module.dependency")
结果:
{
"results" : [ {
"repo" : "isone-app-staging",
"path" : "com/isone/sms/packages/package-batchjobs/40-dry-run-4",
"name" : "package-batchjobs-40-dry-run-4.pom",
"type" : "file",
...
"artifacts" : [ {
"modules" : [ {
"dependencies" : [ {
"dependency.md5" : "f62f14bcfe6923749141ad848a281c18",
"dependency.name" : "com.isone.sms.server:ejb_FCMBatchBeans-api:40-dry-run-4",
"dependency.scope" : "compile",
"dependency.sha1" : "7ee63a9c50d5d57a2f31df52efe493d6b92b252f",
"dependency.type" : "jar"
}, {
...
我们希望通过查询获得的是依赖项的实际 repo/path/name,例如 'isone-app-staging/com/isone/sms/server/ejb_FCMBatchBeans-api/40-dry-run-4/ ejb_FCMBatchBeans-api-40-dry-run-4.jar'。
如果我们不能直接从搜索中获得这些信息,我们可能会抓取dependency.name 和dependency.type 并尝试重建它。但如果我们可以只依赖 Artifactory,它会更有用。