使用jfrog-cli递归下载nuget软件包及其依赖项

时间:2020-07-01 07:08:15

标签: nuget artifactory jfrog-cli

在Jfrog Artifactory中,对于NuGet存储库,我具有以下结构

nuget-virtual-repo
                |__package1.1.0.nupkg
                |__package2.2.0.nupkg
                |__package3.3.0.nupkg

现在package1.1.0依赖于package2.2.0,并且在nuget.dependency属性中进行了提及:

nuget.dependency package2:2.0:

package2.2.0也依赖于package3.3.0,它在nuget.dependency属性中被提及: nuget.dependency package3:3.0:

现在,当我尝试使用jfrog-cli下载package1.1.0时,它不会同时下载其他相关软件包:

jfrog-cli.exe rt dl --apikey=<API_KEY> --url=https://<artifactory_url> --detailed-summary nuget-virtual-repo/package1.1.0.nupkg

输出:

{
  "status": "success",
  "totals": {
    "success": 1,
    "failure": 0
  },
  "files": [
    {
      "source": "https://<artifactory_url>/nuget-virtual-repo/package1.1.0.nupkg",
      "target": "package1.1.0.nupkg"
    }
  ]
}

我也在其中使用spec文件,但在这里它也只下载1个软件包:

'files': [
                {
                    'target': 'C:\JfrogCli',
                    'pattern': 'nuget-virtual-repo/*',
                    'props': 'nuget.id=package1;nuget.version=1.0',
                    'limit': 1,
                    'sortOrder': 'desc',
                    'sortBy': ['created']
                }
         ]

我想要的是递归下载依赖项,即应该下载package2.2.0.nupkg和package3.3.0.nupkg。我检查了文档,但没有发现任何标志来做到这一点。我可以在规范文件中进行任何更改以下载依赖项而无需明确提及吗?

1 个答案:

答案 0 :(得分:1)

您不能仅用JFrog cli替换nuget实现的依赖管理逻辑。

尽管JFrog cli可用于在人工制品上进行身份验证并在解析和上传人工制品期间收集元数据,但是您仍然需要nuget(或.net核心)客户端与存储库公开的nuget api进行交互并通过依赖关系图要求的包裹数量

您可以做的是将JFrog cli与本机客户端一起使用,如此处所述:https://www.jfrog.com/confluence/display/CLI/CLI+for+JFrog+Artifactory#CLIforJFrogArtifactory-BuildingNuGetPackages

jfrog rt nugetc --server-id-resolve=<artifactoryServerID> --repo-resolve=nuget-virtual-repo

然后

jfrog rt nuget install package1 -Version 1.0

这应该安装所有传递依赖项