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.
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 packageCe 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.xmlRemarquer 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 ~/.m2Remarquer que cet emplacement a été recrée et même alimenté.
3. Lancer une deuxième fois la reconstruction
mvn clean packageCette 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.xmlRepé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 packageMaven télécharge ses besoins à nouveau (car le nouveau dépôt est vide) et la construction échoue toujours à la fin.
ls -l ~/maven-repoLe nouveau dépôt est créée.
5. Référencer un dépôt source dans pom.xml
vi pom.xmlAjouter à 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 packageMaintenant 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 deployPour installer dans le dépôt local:
mvn package install]]>