Tutoriel Maven – Mettre en place un dépôt personnel

Objectif: Cette 4eme partie de la série « tutoriel maven » a pour objectif de montrer comment mettre en place un dépôt maven personnel public. Pour cela, nous verrons la manière avec la quelle Maven prend en compte ses dépôts lors de la construction d’un logiciel cible.
Pré-requis: Maven et Java sont installés sur la machine cible munie de l’OS GNU/Linux Debian, Ubuntu ou compatibles. cf. l’article sur l’installation de Maven 3.

Pour construire un logiciel cible, Maven télécharge et installe tout ce dont il a besoin pour accomplir cette tâche. Ces besoins sont principalement:

  • Les librairies dont dépend l’application: déclarées dans la section <dependencies></dependencies> du fichier pom.xml du projet.
  • Les plugin Maven qui accomplissent différentes tâches nécessaires à la construction de la cible : déclarés dans la section <plugins></plugins> du fichier pom.xml du projet.

Qui dit téléchargement, dit source et emplacement d’installation.

Par défaut, si rien n’est indiqué dans la section <repositories></repositories> de pom.xml du projet, le téléchargement se fait depuis l’adresse: http://repo.maven.apache.org/maven2

Par défaut également, la cible locale de ces téléchargements se trouve dans ~/.m2/repository (sous dossier .m2/repository du dossier personnel de l’utilisateur qui lance la construction, /home/xxxxxx, xxxxxx étant l’identifiant de cette personne sur la machine d’exécution).

Cette cible locale, est le dépôt Maven local. A la construction du logiciel cible, Maven cherche d’abord ses besoins dans le dépôt local, s’il ne les trouve pas il les télécharge à partir de là où il pourrait les trouver.

Passons à la pratique.

1. Sauvegarder le dépôt Maven local

Si Maven est déjà installé et qu’il a été utilisé, il convient de sauvegarder le dépôt actuel. A la fin des manipulations proposées, il sera possible de le rétablir tel qu’il était à l’origine.

mv ~/.m2/ ~/m2-save/

2. Télécharger les sources d’une librairie Java exemple et la construire

Exécuter les commandes suivantes l’une après l’autre:

mkdir tmp && cd tmp
wget http://meddeb.net/data/bee-src.tgz
tar xzvf bee-src.tgz
cd bee/
mvn package

Ce qui revient principalement à télécharger les sources d’un exemple à construire et lancer sa construction. Remarquer que Maven télécharge beaucoup de fichiers .jar depuis le dépôt de Maven par défaut, ensuite la construction échoue.

vi pom.xml

Remarquer qu’il n’y a aucune référence à un dépôt: la balise <repositories> n’est pas utilisée du tout.

ls -la ~/.m2

Remarquer que cet emplacement a été recrée et même alimenté.

3. Lancer une deuxième fois la reconstruction

mvn clean package

Cette fois Maven ne télécharge plus rien, car tout ce dont il a besoin existe déjà dans le dépôt local. La construction échoue toujours car la même librairie manquante est introuvable.

4. Modifier le dépôt local par défaut

sudo vi /etc/maven/settings.xml

Repérer la balise <localRepository>, dé-commenter la et saisir une emplacement correcte, par exemple: /home/votreidentifiant/maven-repo. Remplacer « votreidentifiant » par votre identifiant sur la machine utilisée. Ceci donne: <localRepository>/home/votreidentifiant/maven-repo</localRepository>

mvn clean package

Maven télécharge ses besoins à nouveau (car le nouveau dépôt est vide) et la construction échoue toujours à la fin.

ls -l ~/maven-repo

Le nouveau dépôt est créée.

5. Référencer un dépôt source dans pom.xml

vi pom.xml

Ajouter à la fin du fichier, avant la balise </project>

<repositories>
  <repository>
    <id>meddeb-net</id>
    <name>Meddeb.net Repository</name>
    <url>http://meddeb.net/maven</url>
  </repository>
</repositories>

Ensuite, construire

mvn clean package

Maintenant la construction réussit car la librairie qui manque se trouve dans ce dépôt personnel.

6. Mettre en place un dépôt personnel

Pour cela il faut disposer d’un site web accessible sur Internet.
Créer sur le serveur de ce site un dossier maven/ à la racine.
Ajouter à la fin de la section de pom.xml (de la librairie bee)

<extensions>
  <extension>
    <groupId>org.apache.maven.wagon</groupId>
    <artifactId>wagon-ftp</artifactId>
    <version>2.6</version>
  </extension>
</extensions>

Ensuite, ajouter à la fin de pom.xml (avant </project>) en remplaçant « domaine » par le nom de domaine approprié et en ajustant l’url pour l’adapter à l’url ftp d’accès au site utilisé.

<distributionManagement>
 <repository>
   <id>domaine-net</id>
   <url>ftp://ftp.domaine.net/maven</url>
 </repository>
</distributionManagement>

Enfin, ajouter dans le fichier ~/.m2/settings.xml

<settings>
  <servers>
    <server>
      <id>domaine-net</id>
      <username>ftp-user</username>
      <password>ftp-password</password>
    </server>
 </servers>
</settings>

id: le même utilisé dans pom.xml
ftp-user: identifiant d’accès ftp au site
ftp-password; mot de passe ftp d’accès au site

ftp-user, ftp-password et l’url ftp du site sont fournie par votre hébergeur du site utilisé.

Maintenant on peut déployer le fichier .jar résultat dans le dépôt personnel.

mvn package deploy

Pour installer dans le dépôt local:

mvn package install
Share