[DEFINITION DES OUTILS DE TRAVAIL]
I.
Error! Use the Home
tab to apply Titre 1 to
the text that you want
to appear here.
Maven : Gestionnaire de dépendance
Le déploiement d'applications est devenu aujourd'hui
de plus en plus complexe. En effet, à chaque phase
d’un projet, les développeurs doivent gérer un environnement différent : intégration,
recette, pré-production, production. Chaque environnement possédant ses propres
caractéristiques : adresses IP, serveurs de bases de données, etc ; il est de plus en plus
difficile d’obtenir rapidement un déploiement fonctionnel.
Maven, développé par la société Apache, permet donc de s'affranchir de ces contraintes
et d'uniformiser le déploiement des applications en gérant les dépendances.
A. Définition
Maven est un outil logiciel libre pour la gestion et l'automatisation de production des
projets logiciels Java en général et Java EE en particulier.
Il offre entre autres les fonctionnalités suivantes :

Compilation et déploiement des applications Java (JAR, WAR)

Gestion des librairies requises par l'application

Exécution des tests unitaires

Génération des documentations du projet (site web, pdf, Latex)

Intégration dans différents IDE (Eclipse, JBuilder)
Sur le principe de fonctionnement, Maven est semblable à « make » c'est-à-dire qu’il
permet de produire un logiciel à partir de ses sources, en optimisant les tâches réalisées
à cette fin et en garantissant le bon ordre de fabrication.
Ainsi nous disposons d’une façon standard de compiler les projets, d’une façon simple de
publier les informations du projet et d’une façon de partager les JAR entre projets.
B. Principe de fonctionnement
Afin de bien gérer les dépendances, Maven s'appuie sur des repositories de librairies
(jar). Ces repositories peuvent être locaux à la machine ou accessibles via HTTP. Ainsi, à
[DEFINITION DES OUTILS DE TRAVAIL]
Error! Use the Home
tab to apply Titre 1 to
the text that you want
to appear here.
sa première exécution, Maven télécharge les différents plugins dont il a besoin et les
installe dans le répertoire /.maven/repository situé dans le répertoire de travail de
l'utilisateur. Ainsi, ces mêmes librairies peuvent être réutilisées entre les différents
projets.
Maven utilise la technologie Project Object Model (POM) afin de décrire un projet, ses
dépendances avec des modules externes et l'ordre à suivre pour sa production. Il est
livré avec un grand nombre de tâches pré-définies, comme la compilation de code Java
ou encore sa modularisation.
C. Principe de configuration
Maven fournit un moyen de configuration simple, basé sur le format XML. Chaque projet
ou sous-projet est configuré par un POM qui contient les informations nécessaires à
Maven pour traiter le projet (nom du projet, numéro de version, dépendances vers
d'autres projets, bibliothèques nécessaires à la compilation, noms des contributeurs
etc.).
Ce POM se matérialise par un fichier « pom.xml » à la racine du projet. Cette approche
est orientée objet car un POM hérite des propriétés du POM du projet parent. Si une
propriété est redéfinie dans le POM du projet, elle recouvre celle qui est définie dans le
projet parent. Ceci introduit le concept de réutilisation de configuration.
1. Structure du fichier de configuration
Le fichier de configuration (pom.xml) est comme son nom l’indique, un fichier au format
XML. Voici un exemple minimal d’un projet « ProjectTest » :
[DEFINITION DES OUTILS DE TRAVAIL]
Error! Use the Home
tab to apply Titre 1 to
the text that you want
to appear here.
Figure 1 : Architecture du fichier POM.xml
On peut noter la définition d’une librairie « mysql-connector » nécessaire à ce projet.
Cela est réalisé très simplement en spécifiant groupID,artifactId et version de la librairie
en question. Il est possible de définir les propriétés de ce fichier XML soit directement par
édition du fichier, soit en passant par un plugin de notre IDE.
D. Utilisation de Maven
1. Intégration à l’IDE eclipse
Nous utiliserons pour le développement du projet Last Project, l’IDE eclipse. Celui-ci
bénéficie d’un plugin Maven. Une fois installé il va nous permettre de réaliser des actions
Maven plus simplement qu’en ligne de commande.
Voici le menu Maven intégré à eclipse :
Figure 2 : Menu maven sous eclipse
Le plugin permet de créer un nouveau projet, ou encore d’effectuer des actions maven
sur un projet existant. Comme dit précédemment, plusieurs « cibles » maven sont
[DEFINITION DES OUTILS DE TRAVAIL]
Error! Use the Home
tab to apply Titre 1 to
the text that you want
to appear here.
définies par défaut, c’est notamment le cas des cibles build, clean, test. Elles permettent
facilement de compiler l’application, d’exécuter les tests unitaires, ou encore de packager
l’application sous la forme d’une archive (.jar ou .war).
Il est possible de rajouter des cibles pour un projet spécifique. En effet, une quantité
impressionnante de modules pour Maven peut venir se greffer sur la configuration d’un
projet.
Nous pouvons par exemple noter la présence d’une cible « sonar ». (Voir partie X sur
Sonar). Sonar permettant d’analyser la qualité du code source et la couverture du test de
notre logiciel, la cible sonar permet d’exécuter les tests unitaires, et de publier les
résultats sur un serveur sonar. Cela va s’avérer très pratique lors de notre phase de
développement.
[DEFINITION DES OUTILS DE TRAVAIL]
Error! Use the Home
tab to apply Titre 1 to
the text that you want
to appear here.
2. Ajout d’une dépendance via eclipse
L’IDE eclipse permet également d’ajouter très facilement des dépendances de librairies
pour un projet. Voici l’exemple d’un projet « Project » dans eclipse :
Figure 3 : Ajout de dépendance via eclipse
Il suffit de parcourir les menus Maven pour ajouter une dépendance.
Admettons que notre application nécessite l’utilisation d’une connexion à une base de
données MySQL, la librairie « mysql-connector-java.jar » est nécessaire.
Figure 4 : Sélection de la dépendance
[DEFINITION DES OUTILS DE TRAVAIL]
Error! Use the Home
tab to apply Titre 1 to
the text that you want
to appear here.
3. Utilisation du gestionnaire de repositories Nexus
Afin de nous faciliter la tâche dans la recherche et l’utilisation des dépendances pour
notre projet, nous allons également utiliser Nexus. Ce logiciel gèrera les "artefacts"
nécessaire pour le développement, le déploiement, et le provisionnement de notre projet.
Cela va permettre de centraliser les repositories de librairies externes existant très
simplement.
Le serveur Nexus sera sur la même machine que le serveur d’intégration continue, ce qui
garantira une rapidité lors de l’ajout de dépendance.
Dans la configuration de Maven, nous déclarerons uniquement l’URL vers le repository
central qui sera Nexus. A chaque dépendance dont Maven aura besoin, il ira chercher le
fichier sur le serveur Nexus. Le serveur Nexus disposera donc en local de toutes les
librairies existantes dans le monde Java. Cela crée une sorte de miroir.
Visualisation de l’interface de Nexus :
Figure 5 : Gestionnaire de repositories Nexus
[DEFINITION DES OUTILS DE TRAVAIL]
Error! Use the Home
tab to apply Titre 1 to
the text that you want
to appear here.