【问题标题】:Use jfrog-cli to recursively download nuget package along with it's dependencies使用 jfrog-cli 递归下载 nuget 包及其依赖项
【发布时间】:2020-07-01 07:08:15
【问题描述】:

我在 Jfrog Artifactory for 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。我检查了文档,但没有找到任何标志来做到这一点。我可以在规范文件中更改什么来下载依赖项而不明确提及它们吗?

【问题讨论】:

    标签: nuget artifactory jfrog-cli


    【解决方案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
    

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

    【讨论】:

    • 谢谢!我还有一个问题。如果我们想下载 nupkg 文件而不是解压缩它,有什么方法可以使用 nuget 来完成吗? nuget install 提取 nupkg 文件的内容。
    • 嗨,我不认为 nuget 客户端允许这样的操作。作为记录,当您使用 jfrog rt nuget 命令时,jfrog cli 只是 nuget 客户端的包装器,因此它不能更改客户端的本机行为。最好有更多关于用例的上下文,以更好地了解您要实现的目标。
    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 2016-12-12
    • 2019-12-05
    • 2013-07-20
    • 2014-03-27
    • 1970-01-01
    • 2019-03-19
    • 2022-01-26
    相关资源
    最近更新 更多