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

使用Apache Ivy从AWS CodeArtifact拉取构件失败求助

问题:Apache Ivy无法从AWS CodeArtifact下载构件

环境配置

当前使用的ivysettings.xml配置如下:

<ivysettings>
    <properties file="${ivy.settings.dir}/ivysettings-file.properties"/>
    <settings defaultResolver="thechain"/>
    <credentials
        host="i****.d.codeartifact.us-west-2.amazonaws.com"
        username="aws"
        passwd="${CODEARTIFACT_AUTH_TOKEN}"/>
    <resolvers>
        <chain name="thechain">
            <ibiblio name="central" m2compatible="true" 
                root="https://repo1.maven.org/maven2/" />
            <ibiblio name="codeartifact" m2compatible="true" 
                root="https://i****.d.codeartifact.us-west-2.amazonaws.com/maven/****-repo/" checkconsistency="false"/>
        </chain>
    </resolvers>
</ivysettings>

报错信息

拉取构件时出现未解析依赖错误:

[ivy:retrieve]  ==== codeartifact: tried
[ivy:retrieve]    https://i***.d.codeartifact.us-west-2.amazonaws.com/maven/*-3.0.1-6.pom
[ivy:retrieve]    -- artifact com.viscount#alarmserver;3.0.1-6!alarmserver.jar:
[ivy:retrieve]    https://i***.d.codeartifact.us-west-2.amazonaws.com/maven/*-3.0.1-6.jar
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      ::          UNRESOLVED DEPENDENCIES         ::
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      :: com.*#*;3.0.1-6: not found
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::

解决方案

1. 补全Credentials的Realm配置

AWS CodeArtifact的HTTP Basic认证Realm固定为CodeArtifact,必须显式配置,否则Ivy无法正确匹配认证信息。修改credentials节点:

<credentials
    host="i****.d.codeartifact.us-west-2.amazonaws.com"
    realm="CodeArtifact"
    username="aws"
    passwd="${CODEARTIFACT_AUTH_TOKEN}"/>

2. 强制Ibiblio使用Maven标准路径格式

从报错URL可以看到,Ivy生成的请求路径缺失了groupId的层级结构(如com/viscount/alarmserver),需要为codeartifact解析器添加pattern属性,强制遵循Maven仓库路径规则:

<ibiblio name="codeartifact" m2compatible="true" 
    root="https://i****.d.codeartifact.us-west-2.amazonaws.com/maven/****-repo/" 
    checkconsistency="false"
    pattern="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>

3. 验证认证令牌有效性

确保CODEARTIFACT_AUTH_TOKEN是通过AWS CLI正确生成的有效令牌(有效期12小时),生成命令示例:

aws codeartifact get-authorization-token --domain your-domain --domain-owner your-account-id --region us-west-2

4. 核对依赖坐标一致性

确认ivy.xml中的依赖坐标(groupId、artifactId、version)与CodeArtifact仓库中的构件完全匹配,比如com.viscount#alarmserver;3.0.1-6对应的仓库路径应为com/viscount/alarmserver/3.0.1-6/alarmserver-3.0.1-6.pom。

5. 启用调试日志排查细节

在Ant的ivy:retrieve任务中添加verbose="true",查看完整的请求日志,确认认证是否成功、请求URL是否正确:

<ivy:retrieve verbose="true" conf="compile"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:00:34