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

如何将私有Maven仓库(Artifactory)迁移至AWS CodeArtifact?

将私有Artifactory Maven仓库迁移到AWS CodeArtifact的实操方案

一、前置准备

  • 本地安装Maven 3.6+、AWS CLI,且AWS CLI已配置具备CodeArtifact访问权限的凭证
  • 在AWS CodeArtifact中创建匹配原Artifactory类型的仓库(如release/snapshot)及对应域
  • 获取Artifactory的访问凭证(用户名/密码或API密钥),确保能拉取目标仓库内所有构件

二、批量迁移(适合大量构件)

1. 导出Artifactory构件清单

通过Artifactory REST API批量导出构件坐标:

curl -u your-artifactory-username:your-password "https://your-artifactory-instance/api/search/aql" -d 'items.find({"repo":"target-artifactory-repo"}).include("group","name","version","packaging")' > artifacts.json

将导出的JSON文件转换为每行包含groupId:artifactId:version:packaging格式的文本文件(可通过Python/jq等工具处理),例如:

com.example:common-lib:1.0.0:jar
com.example:service-core:2.1.0:war

2. 批量迁移脚本

先配置CodeArtifact的Maven登录,再循环执行拉取+上传操作:

# 登录CodeArtifact,自动配置Maven settings
aws codeartifact login --tool maven --domain your-codeartifact-domain --domain-owner your-aws-account-id --repository your-codeartifact-repo

# 读取构件清单,逐个迁移
while IFS=: read -r groupId artifactId version packaging; do
    # 从Artifactory拉取构件到本地仓库
    mvn dependency:get -DgroupId=$groupId -DartifactId=$artifactId -Dversion=$version -Dpackaging=$packaging -DremoteRepositories=artifactory::default::https://your-artifactory-instance/target-artifactory-repo
    
    # 上传到CodeArtifact
    artifact_path="${groupId//./\/}/${artifactId}/${version}/${artifactId}-${version}.${packaging}"
    mvn deploy:deploy-file \
        -DgroupId=$groupId \
        -DartifactId=$artifactId \
        -Dversion=$version \
        -Dpackaging=$packaging \
        -Dfile="${HOME}/.m2/repository/${artifact_path}" \
        -Durl=https://your-codeartifact-domain-your-aws-account-id.d.codeartifact.your-region.amazonaws.com/maven/your-codeartifact-repo/ \
        -DrepositoryId=codeartifact
done < artifacts-list.txt

三、手动迁移(适合少量构件)

1. 配置Maven settings.xml

添加Artifactory和CodeArtifact的服务器及仓库配置:

<settings>
    <servers>
        <server>
            <id>artifactory-repo</id>
            <username>your-artifactory-username</username>
            <password>your-artifactory-password</password>
        </server>
        <server>
            <id>codeartifact-repo</id>
            <username>aws</username>
            <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
        </server>
    </servers>
    <profiles>
        <profile>
            <id>migrate-profile</id>
            <repositories>
                <repository>
                    <id>artifactory-repo</id>
                    <url>https://your-artifactory-instance/target-artifactory-repo</url>
                </repository>
            </repositories>
        </profile>
    </profiles>
</settings>

2. 拉取并部署构件

# 从Artifactory拉取构件到本地
mvn dependency:get -DgroupId=com.example -DartifactId=your-artifact -Dversion=1.0.0 -Dpackaging=jar -P migrate-profile

# 获取CodeArtifact临时授权令牌
export CODEARTIFACT_AUTH_TOKEN=$(aws codeartifact get-authorization-token --domain your-codeartifact-domain --domain-owner your-aws-account-id --query authorizationToken --output text)

# 部署到CodeArtifact
mvn deploy:deploy-file \
    -DgroupId=com.example \
    -DartifactId=your-artifact \
    -Dversion=1.0.0 \
    -Dpackaging=jar \
    -Dfile="${HOME}/.m2/repository/com/example/your-artifact/1.0.0/your-artifact-1.0.0.jar" \
    -Durl=https://your-codeartifact-domain-your-aws-account-id.d.codeartifact.your-region.amazonaws.com/maven/your-codeartifact-repo/ \
    -DrepositoryId=codeartifact-repo

四、关键注意事项

  • 快照构件处理:若原仓库包含SNAPSHOT版本,需确保CodeArtifact仓库已开启快照支持,迁移时保留版本号中的SNAPSHOT后缀,Maven会自动处理时间戳版本
  • 权限验证:AWS用户需具备codeartifact:PutPackageVersion、codeartifact:ReadFromRepository等权限;Artifactory用户需具备目标仓库的读取权限
  • 完整性校验:迁移完成后,选取核心构件验证依赖拉取是否正常,避免遗漏间接依赖
  • 大文件优化:针对大构件,可调整Maven的http.connectionTimeout和http.socketTimeout参数,避免传输中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:15:22