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

如何快速将Artifactory中0.1版本制品复制到0.2版本?

快速复制Artifactory中Maven制品版本的方法

针对你需要将Artifactory中0.1版本的所有制品快速复制到0.2版本的需求,以下是几种高效的实现方式:

1. 利用Artifactory REST API批量复制

这是最适合自动化集成的方案,通过API可以一次性复制指定范围内的所有制品。

示例curl命令(需替换实际参数):

curl -u <用户名>:<密码> -X POST "http://<你的Artifactory地址>/api/copy/<仓库名>/<groupId路径>/*/0.1?to=/<仓库名>/<groupId路径>/*/0.2&includePattern=*.jar,*.ear"
  • <仓库名>:比如libs-release-local或libs-snapshot-local
  • <groupId路径>:对应Maven groupId的路径形式,比如com/yourcompany
  • includePattern:过滤只复制JAR和EAR文件,避免复制不必要的元数据或临时文件

如果需要更精确的筛选,可以用Artifactory的AQL(Artifactory Query Language)先查询出所有0.1版本的制品,再批量复制。

2. 通过Artifactory UI手动批量复制

如果不需要自动化,直接用UI操作更直观:

  • 登录Artifactory,导航到存储0.1版本制品的目录(比如libs-release-local/com/yourcompany)
  • 使用搜索功能筛选所有版本为0.1的制品,或者直接进入每个模块的0.1版本目录
  • 选中所有需要复制的文件,右键选择复制,然后在弹出的窗口中指定目标路径为对应模块的0.2版本目录
  • 若有大量模块,可以批量选中多个0.1版本的目录,一次性复制到对应的0.2路径下

3. 脚本化批量部署(适合CI/CD集成)

如果需要把这个流程整合到CI/CD脚本中,可以结合curl和jq(JSON解析工具)实现自动化:

# 1. 查询所有0.1版本的JAR/EAR制品
ARTIFACT_LIST=$(curl -u <用户名>:<密码> "http://<你的Artifactory地址>/api/search/aql?ql=items.find({\"repo\":\"<仓库名>\",\"path\":{\"$match\":\"<groupId路径>/*/0.1\"},\"name\":{\"$match\":\"*.jar\",\"$or\":{\"name\":{\"$match\":\"*.ear\"}}}}).include(\"repo\",\"path\",\"name\")")

# 2. 遍历查询结果,复制到0.2版本路径
echo $ARTIFACT_LIST | jq -r '.results[] | .repo + "/" + .path + "/" + .name' | while read ARTIFACT_PATH; do
    # 解析artifactId和目标路径
    ARTIFACT_ID=$(echo $ARTIFACT_PATH | rev | cut -d'/' -f2 | rev)
    TARGET_PATH=$(echo $ARTIFACT_PATH | sed 's/\/0.1\//\/0.2\//')
    # 复制文件
    curl -u <用户名>:<密码> -X PUT "http://<你的Artifactory地址>/$TARGET_PATH" -T "$ARTIFACT_PATH"
done

注意事项

  • 复制完成后,Artifactory会自动生成0.2版本的maven-metadata.xml元数据文件,若元数据未自动更新,可以通过Artifactory的重新索引功能触发更新
  • 后续增量构建时,确保CI/CD流程会将变更后的制品覆盖0.2版本的对应文件,避免旧制品残留
  • 操作账号需要具备Artifactory对应仓库的读写权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:55:38