Introduction à Apache Maven et Apache Archiva par Jean-Sébastien FRANCK

Fonctionnement général

Différents points sont traités dans cette partie :

Les fonctionnalités

Voici les différentes fonctionnalités de Maven :

Configuration d'un projet Maven : settings.xml et pom.xml

Deux fichiers principaux permettent la configuration de Maven et des projets :

Les archetypes

A la création d'un projet Maven, le fait de spécifier un archetype permet de définir comment sera organisé l'arborescence du projet. Un archetype est donc un template de projet.

Il existe différents archetypes, chacun correspondant à un type de projet particulier. Il existe par exemple des archetypes pour les projets J2EE, les projets JPA, les projets JSF, les projets Struts etc.

L'arborescence suivante est l'arborescence créée lors de l'utilisation d'un archetype pour les simples projets Java :

Le cycle de vie d'un projet Maven

Le cycle de vie de Maven est composée de plusieurs tâches. Le développeur peut exécuter une tâche pour effectuer un traitement donné sur le projet. Voici les principales tâches du cycle de vie de Maven :

L'ordre de la liste de ces tâches n'est pas anodin. En effet, l'exécution de chacune des tâches listées ci-dessus est précédée par l'exécution des tâches précédant la tâche à exécuter. Ainsi, lorsque le développeur exécute la tâche package, les tâches compile, test-compile, et test sont exécutées au préalable.

Les plugins

Les fonctionnalités de base de Maven sont enrichies par de nombreux plugins existants. On peut notamment les cites les plugins suivants :

A noter que chaque plugin offre de une à plusieurs tâches/goals à exécuter. Par exemple, le plugin cargo propose entre autres les tâches deploy et undeploy permettant respectivement de déployer ou de supprimer un artifact d'un serveur d'application. Pour plus d'informations, veuillez consulter la partie "Utilisation et écriture d'un plugin Maven" du chapitre "Cas pratiques".

La gestion des dépendances

Par défaut, Maven télécharge les librairies/dépendances sur les repositories officiels Maven (par exemple http://repo1.maven.org/maven2. Les dépendances à télécharger sont précisées dans le fichier pom.xml du projet. Les dépendances téléchargées sont stockées dans le répertoire ~/.m2/repository du poste client :

Configuration d'une dépendance

Voici un exemple de configuration de dépendance dans le fichier pom.xml :

<dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>3.8.1</version>
     <scope>test</scope>
   </dependency>
</dependencies>

Avec cette configuration, Maven va télécharger la version 3.8.1 de la librairie junit:junit. Chaque librairie est distinctible grâce aux trois champs groupId, artifactId et version. Le champ groupId représente le nom du groupe de la librairie et le champ artifactId représente le nom de la librairie.

Par défaut, la librairie est téléchargée en http sur les repositories officiels. Les champs groupId, artifactId et version permettent à Maven de trouver la librairie sur les repositories officiels. Par exemple, dans l'exemple de la librairie junit : http://repo1.maven.org/maven2/junit/junit/3.8.1/.

javacio.us

Il n'est pas toujours évident de trouver la librairie que l'on cherche sur un repository existant. Le plugin google javacio.us permet à partir du nom d'une classe Java de retrouver le repository, le groupId et l'artifactId d'une librairie.

Portée des dépendances

Le champ scope permet, quant-à lui, de spécifier à quelle échelle la librairie doit être utilisée. Il existe différentes valeurs pour ce champ :



Apache Archiva >>