You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Curl从Artifactory下载最新的.war格式构件?

解决Artifactory Curl查询返回所有构件而非最新的问题

我懂你的困扰——用pattern search API确实会返回所有匹配的.war构件,没法直接拿到最新的那个。下面给你两种实用的解决思路:

方法1:用Artifactory AQL(推荐方案)

Artifactory的AQL(Artifactory Query Language)是更灵活的查询工具,能直接在服务器端完成筛选和排序,不用本地额外处理。

执行下面的Curl命令,它会定位到指定仓库路径下的所有.war文件,按创建时间降序排序,只返回最新的那一个:

curl -X POST "https://artifactory.xxx.com/artifactory/api/search/aql" \
-H "Content-Type: text/plain" \
-d 'items.find({
    "repo": "bds-snapshot",
    "path": "com/test/sample/mobile-project-api/0.0.1-SNAPSHOT",
    "name": {"$match": "*.war"}
}).sort({"$desc": ["created"]}).limit(1)'

如果要直接下载最新构件,可以从返回结果里提取downloadUri字段,或者把命令改成自动获取链接并下载:

DOWNLOAD_URL=$(curl -s -X POST "https://artifactory.xxx.com/artifactory/api/search/aql" \
-H "Content-Type: text/plain" \
-d 'items.find({"repo": "bds-snapshot","path": "com/test/sample/mobile-project-api/0.0.1-SNAPSHOT","name": {"$match": "*.war"}}).sort({"$desc": ["created"]}).limit(1)' | \
jq -r '.results[0].downloadUri')

curl -O "$DOWNLOAD_URL"

方法2:解析Pattern Search结果本地筛选

如果你更习惯用原来的pattern search API,可以借助jq工具(JSON处理工具)在本地解析返回结果,筛选出最新构件:

  1. 先获取所有构件并提取最新那个的URI:
LATEST_WAR_URI=$(curl -s "https://artifactory.xxx.com/artifactory/api/search/pattern?pattern=bds-snapshot:com/test/sample/mobile-project-api/0.0.1-SNAPSHOT/*.war" | \
jq -r '.results | sort_by(.created) | last().uri')
  1. 拼接下载链接并执行下载:
curl -O "https://artifactory.xxx.com$LATEST_WAR_URI"

注:这种方法需要你的环境已安装jq,可以用包管理器安装(比如apt install jq或brew install jq)。

小提醒

对于SNAPSHOT构件,文件名里通常会带时间戳(比如mobile-project-api-0.0.1-20240520.143000-1.war),你也可以按文件名排序,但优先推荐用Artifactory的created字段排序,因为它是构件上传到仓库的准确时间,比文件名里的时间戳更可靠。

内容的提问来源于stack exchange,提问作者user7486728

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:30:53