如何使用 curl 或 wget 从 GitLab 下载 maven 包?

Posted

技术标签:

【中文标题】如何使用 curl 或 wget 从 GitLab 下载 maven 包?【英文标题】:How can I download a maven package from GitLab with curl or wget? 【发布时间】:2021-11-30 03:09:05 【问题描述】:

我的 Gitlab 包注册表中有一个 maven 包 (dummy),我想使用 curlwget 命令下载它。

按照this我试过了:

curl --user "username:DEPLOY_TOKEN" \
     "https://gitlab.com/api/v4/projects/666/packages/maven/dummy/0.0.1-SNAPSHOT/dummy-0.0.1-SNAPSHOT.jar"

但我有:

"message":"404 Project Not Found"

项目ID正确。

如何下​​载maven包?

【问题讨论】:

我不了解 gitlab,但在 Nexus 或 Artifactory 等通常的 Maven 存储库中,SNAPSHOT 版本具有时间戳名称,如 dummy-0.0.1-<somenumber>-1.jar 【参考方案1】:

要下载任何包,包括 maven 包,您需要使用Packages API。

按照这些文档,您需要使用:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"

假设描述中的666是项目ID,那么它是:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.com/api/v4/projects/666/packages/:package_id"

但您仍然需要找出包 ID。

如果不知道包id,可以先使用packages API列出项目中可用的包。

您使用的端点看起来像是来自Maven API documentation page,其中明确指出它不适合手动使用,因此不是推荐的方法。

如果您仍然需要使用该端点,(根据页面顶部的注释)您需要关注package registry authentication documentation。

这意味着如果您想使用部署令牌,您需要确保您的部署令牌具有read_package_registrywrite_package_registry,或两者兼有。

您的 curl 命令将如下所示:

curl --header "Deploy-Token: <token>" "https://gitlab.com/api/v4/projects/666/packages/maven/dummy/0.0.1-SNAPSHOT/dummy-0.0.1-SNAPSHOT.jar"

【讨论】:

以上是关于如何使用 curl 或 wget 从 GitLab 下载 maven 包?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 wget 或 curl 身份验证下载

现在如何通过 curl 或 wget 下载 WWDC 2010 视频?

如何通过触发器下载提交给 gitlab 的二进制文件?

使用wget或curl下载网站进行存档

使用 curl 从 GitLab 覆盖文件

Centos 7搭建Gitlab服务器