Guillaume ALAUX bio photo

Guillaume ALAUX

An IT passionate

LinkedIn Github

Maven

Maven tient aujourd’hui une place importante dans beaucoup de processus d’automatisation de tâches de projets Java. Ce projet initié en 2002 et aujourd’hui sous licence Apache 2.0 a récemment inauguré la branche 2.2.

Pour ceux qui ne connaissent pas encore le projet de la fondation Apache, Maven est un outil puissant d’automatisation de tâches de projets de développement. Il vous permet par exemple de lancer des compilations, tests unitaires et archives de votre projet. Maven est souvent comparé dans ses fonctionnalités au Makefile du C et possède aussi des relans de Ant. Même s’il avait été créé nativement pour travailler sur des projets Java, il ne se limite plus aujourd’hui à ceux-ci. Maven intègre en effet un système de plugins dont certains permettent son utilisation sur des projets C/C++ et .net.

La structure d’un projet Maven repose sur l’utilisation de Project Object Model ou POM, des fichiers XML décrivant l’organisation de votre projet ainsi que la définition de séquences de build personnelles que vous pourrez appeler par la suite comme dans l’exemple suivant :

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <!-- The Basics -->
  <groupId> ... </groupId>
  <artifactId> ... </artifactId>
  <version> ... </version>
  <packaging> ... </packaging>
  <dependencies> ... </dependencies>
  <modules> ... </modules>
  <properties> ... </properties>
  <!-- Build Settings -->
  <build> ... </build>
  <reporting> ... </reporting>
  <!-- More Project Information -->
  <name> ... </name>
  <description> ... </description>
  <!-- Environment Settings -->
  <issueManagement> ... </issueManagement>
  <ciManagement> ... </ciManagement>
  <mailingLists> ... </mailingLists>
  <repositories> ... </repositories>
  <pluginRepositories> ... </pluginRepositories>
  <profiles> ... </profiles>
</project>

Récemment, la fondation Apache a effectué certaines évolutions très importantes qui justifient le changement de version majeure. Le plus important de ces changements est certainement le réhaussement de la version minimale de Java à 1.5 au lieu de 1.4. Ceci peut évidemment poser des problèmes pour les projets attachés à du java 1.4 ; Apache a prévu une solution expliquée en détail ici. La fondation Apache prévient aussi dans sa note de version que les exécutions avec des id “default-phase” peuvent donner des résultats inattendus : ces ID sont en effet maintenant inclus dans le cycle default. Apache annonce aussi un retour en arrière sur la manière de résoudre les numéros de versions. L’algorithme utilisé redevient celui de la 2.0, celui de la version 2.1 est abandonné.

Il faut aussi noter qu’une version corrective 2.2.1 est aujourd’hui à disposition. Cette version corrige certaines régressions apparues dans la 2.2. En particulier, Maven réintègre wagon-http pour les échanges avec des dépôts distants accessibles en HTTP. Cette dernière mouture de Maven corrige certaines erreurs d’injection de composants personnalisés. N’hésitez donc pas à vous référer à la note officielle Maven pour plus d’informations.

Article publié sur LinuxFr dans le cadre de mon activité professionnelle à Linagora.