使用 JFrogCLI 从 Artifactory 上的智能仓库下载工件

Using JFrogCLI to download artifacts from a smart repo on Artifactory

我正在使用 Artifactory 5.2 版,将 maven2 存储库配置为 http://repo1.maven.org 的智能存储库 因此,任何由 maven 或 gradle 启动的构建都将请求 Artifactory 服务器上的依赖项,如果工件尚未缓存,智能仓库将首先从 http://repo1.maven.org 下载文件,然后提供maven / gradle 脚本的内容。 这按预期工作,我不能在这里抱怨。

但是,我还需要直接使用 jfrogcli 下载依赖项,命令如下

jfrog rt dl maven2/com/google/guava/guava-parent/10.0.1/guava-parent-10.0.1.pom

据我所知,这不适用于智能存储库。

    [Info] Searching items to download...
    [Info] Downloaded 0 artifacts.

我发现的唯一解决方法是首先使用直接下载从 maven2 存储库请求工件,然后使用 jfrog cli 从 maven2-cache 存储库下载它

curl -H ... -X GET <server>/artifactory/maven2/com/google/guava/guava-parent/10.0.1/guava-parent-10.0.1.pom
jfrog rt dl maven2-cache/com/google/guava/guava-parent/10.0.1/guava-parent-10.0.1.pom

我很确定我遗漏了一些简单的东西。智能存储库和 jfrog cli,但我找不到简单的答案。欢迎任何反馈。

这是 JFrog CLI 的一个已知限制,与下载命令的执行方式有关。
目前,CLI 首先使用 AQL(Artifactory 查询语言)查询 Artifactory 以获取应下载的工件列表。当您使用模式下载多个工件时,这非常有用。
但是,AQL 当前不支持查询尚未缓存的工件。这意味着 CLI 不会尝试下载未缓存的文件。