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
]]>