1

我们使用 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,它会更有用。

4

0 回答 0