如何使用curl或wget从GitLab Package Registry下载Maven包
问题根因
你遇到的404报错通常由两个原因导致:
- 未使用Maven包专属的API规则,通用包的下载逻辑不适用于Maven类型包
- GitLab出于安全考虑,无权限访问的项目也会返回404错误(而非403),避免项目存在性泄露,认证信息错误也会触发该报错
正确下载步骤
1. 配置正确的认证信息
- 如果你使用**部署令牌(Deploy Token)**认证:curl的用户参数固定格式为
deploy_token:<你的部署令牌值>,注意用户名固定为deploy_token,不要填个人账号用户名,同时部署令牌需要提前分配read_package_registry权限 - 如果你使用**个人访问令牌(PAT)**认证:用户参数格式为
<你的GitLab用户名>:<你的PAT值>,PAT需要勾选read_api或read_package_registry权限
2. 执行curl下载命令
按照如下格式替换占位符即可,注意groupId需要按照.分割成路径层级,比如groupId为com.mycompany就对应路径com/mycompany:
curl --user "deploy_token:替换为你的部署令牌" \ "https://gitlab.com/api/v4/projects/替换为你的项目ID/packages/maven/替换为groupId路径/替换为artifactId/替换为版本号/替换为构件完整文件名" \ -o dummy-0.0.1-SNAPSHOT.jar
如果你的dummy包没有前缀groupId,直接使用如下命令即可:
curl --user "deploy_token:替换为你的部署令牌" \ "https://gitlab.com/api/v4/projects/666/packages/maven/dummy/0.0.1-SNAPSHOT/dummy-0.0.1-SNAPSHOT.jar" \ -o dummy-0.0.1-SNAPSHOT.jar
3. 异常排查
如果执行后仍然报错,按如下顺序核对:
- 确认项目的Package Registry功能已开启:进入项目设置→通用→可见性、项目功能、权限→仓库分类下勾选「Packages」
- 确认包的版本号、文件名完全匹配GitLab Package Registry页面显示的信息
- 如果你使用的是私有部署的GitLab实例,将链接中的
gitlab.com替换为你的实例域名即可
内容的提问来源于stack exchange,提问作者Kambei
相关产品推荐
相关产品推荐

