Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I download a maven package from GitLab with curl or wget?

Tags:

maven

gitlab

I have a maven package (dummy) in my Gitlab Package Registry that I want download with a curl or wget command.

Following this I tried:

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"

but I have:

{"message":"404 Project Not Found"}

The project id is correct.

How can I download the maven package?

like image 426
Kambei Avatar asked Dec 14 '25 10:12

Kambei


2 Answers

To download any package, including a maven one, you will need to use the Packages API.

Following those docs, you need to use:

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

Assuming the 666 in the description is the project ID, then it'd be:

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

but you would still need to figure out the package id.

If you don't know the package id, you can use the packages API to list the available packages in the project first.

The endpoint you're using looks like it's from the Maven API documentation page, which specifically states it's not meant for manual consumption, so it's not the recommended method.

If you need to use that endpoint anyway, (as per the note at the top of the page) you need to follow the package registry authentication documentation.

This means that if you want to use a deploy token, you need to make sure your deploy token has read_package_registry, write_package_registry, or both.

Your curl command would then look like this:

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"

like image 183
Arty-chan Avatar answered Dec 16 '25 10:12

Arty-chan


Your download script using curl should be like this.

GLB_PRIVATE_TOKEN=<private-token>;
GLB_GROUP_PJT_ID="<numeric project id>";
MAVEN_GROUP_ID="<maven-group-id replace . with />";
MAVEN_ARTIFACT_ID="<maven-artifact-id>";
MAVEN_ARTIFACT_VERSION="<maven-artifact-version>"
GLB_ARTIFACT_FILE_NAME="<maven-artifact-version w/o SNAPSHOT>-<file-specific-number as found in gitlab>";
FILE_TYPE=".jar";

echo "Running curl for $MAVEN_ARTIFACT_ID-$GLB_ARTIFACT_FILE_NAME"

curl --header "Private-Token: $GLB_PRIVATE_TOKEN" "https://gitlab.com/api/v4/projects/$GLB_GROUP_PJT_ID/packages/maven/$MAVEN_GROUP_ID/$MAVEN_ARTIFACT_ID/$MAVEN_ARTIFACT_VERSION/$MAVEN_ARTIFACT_ID-$GLB_ARTIFACT_FILE_NAME$FILE_TYPE" >> <filename>.<filetype>

In your case your GLB_ARTIFACT_FILE_NAME would be 0.0.1- < some hyphenated number > .jar

like image 40
Balaji Avatar answered Dec 16 '25 09:12

Balaji



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!