Utiliser la Maven package registry de GitLab
La photo n'a pas toujours un rapport avec le sujet
😝
J'avais fait un twitch sur le sujet il y a 2 mois, mais je vais remettre "au propre" les étapes décrivant comment utiliser GitLab comme une Maven package registry.
Mon cas d'utilisation est une librairie Java que je veux pouvoir utiliser à partir de mes autres projets (vous pouvez trouver le projet d'exemple ici https://gitlab.com/k33g_org/samples/play-with-java/fourty-two)
Donc, voici une façon de faire pour transformer votre projet en une registry Maven (pour d'autres points spécifique je vous laisse lire la documentation: https://docs.gitlab.com/ee/user/packages/maven_repository/)
Création de la package registry
Paramétrages de votre projet GitLab pour le transformer en package registry
Pour transformer votre projet en package registry vous aurez essentiellement besoin de 2 choses pour commencer:
- l'url de l'API GitLab de votre instance
- l'ID de votre projet
| Id du Projet | |
|---|---|
![]() |
L'ID est facile à trouver, il est juste en dessous de nom du projet |
Création d'un fichier settings.xml
Ensuite dans votre projet, ajoutez un fichier settings.xml qui servira à l'authentification automatique avec la CI:
<settings>
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Job-Token</name>
<value>${env.CI_JOB_TOKEN}</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
Modifications du fichier pom.xml
Tout d'abord, modifier la section <properties> pour préciser l'ID de votre projet (1️⃣) et l'url de l'API de l'instance GitLab que vous utilisez (2️⃣):
<properties>
<gitlabProjectId>PROJECT_ID</gitlabProjectId> 1️⃣
<gitlabURL>https://gitlab.com/api/v4</gitlabURL> 2️⃣
<mainClass>acme.FourtyTwo</mainClass>
</properties>
Ensuite, dans la section <repositories> ajouter les infos relatives à votre repository (3️⃣ on reprend les valeurs définies dans <properties>)
<repository>
<id>gitlab-maven</id>
<url>${gitlabURL}/projects/${gitlabProjectId}/packages/maven</url> 3️⃣
</repository>
Et dernière modification, vous créez une section <distributionManagement> comme celle-ci (4️⃣ 5️⃣toujours en reprenant les valeurs définies dans <properties>):
<distributionManagement>
<repository>
<id>gitlab-maven</id>
<url>${gitlabURL}/projects/${gitlabProjectId}/packages/maven</url> 4️⃣
</repository>
<snapshotRepository>
<id>gitlab-maven</id>
<url>${gitlabURL}/projects/${gitlabProjectId}/packages/maven</url> 5️⃣
</snapshotRepository>
</distributionManagement>
Publier la librairie avec GitLab CI
Mon script de CI reste très simple (c'est pour l'exemple
image: maven:latest
stages:
- build
- deploy
build_library:
stage: build
script:
- mvn compile assembly:single
deploy_library:
stage: deploy
script:
- mvn deploy -gs ./settings.xml
🖐 ️ Remarque*: le flag-gspermet d'expliquer à Maven qu'il faut utiliser le fichiersettings.xmlau moment de la publication.
Une fois votre librairie disponible (donc une fois le pipeline de CI terminé):
| package registry | |
|---|---|
| Sélectionnez le menu Packages & Registries, puis Package Registry, et vous pourrez voir votre nouvelle librairie | ![]() |
Ensuite, si vous clickez sur le libellé de la librairie, vous obtenez tout le mode d'emploi pour utiliser votre librairie dans un autre projet Java:
| détails |
|---|
![]() |
![]() |
Pour tester de bout en bout, voici un autre projet qui utilise ma nouvelle librairie: https://gitlab.com/k33g_org/samples/play-with-java/amazing-project
mvn dependency:get -Dartifact=acme:fourty-two:1.0-SNAPSHOT pour récupérer votre dépendance.
Et voilà, c'est terminée pour cette recette. Prochainement, je vous expliquerai comment faire pour transformer votre projet en registry npm, registry Docker et aussi une registry plus "générique" pour publier par exemple les builds de vos releases.
N'hésitez pas à poser vos questions en ajoutant une note à cette issue, et très bonne journée
👋
- Si vous avez aimé (ou pas) ce "post" n'hésitez pas à utiliser les emojis pour réagir
- N'hésitez pas non plus à laisser des commentaires ou poser des questions
- Enfin, vous pouvez utiliser ce lien Rss feed pour vous abonner à ce blog à base d'issues




