Apache Maven par Johann AVELINE



Introduction

Présentation

Apache Maven est un outil "Open Source" utilisé pour gérer la production de projets logiciels Java de manière général. Maven est un projet de l'organisation Apache Software Foundation et était historiquement une branche de l'organisation Jakarta Project. L'objectif de cet outil peut être comparé au système Make sous Unix, à savoir : 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. Il est également comparable à l'outil Ant, mais fournit des moyens de configuration plus simples, eux aussi basés sur le format XML.

Ant, Make et bon nombre d'outils similaires s'appuient sur une approche procédurale, pour laquelle on décrit les opérations à accomplir pour construire le logiciel ou éxecuter des tâches annexes. Cela se traduit donc par une suite de commandes, qui prendra d'une façon ou d'une autre la forme suivante :

Cette approche fonctionne très bien mais elle nécessite :

Maven choisit une approche différente, fondée sur le constat suivant : tous les projets Java vont suivre à peu près le même schéma. Ainsi, les développeurs de Maven considèrent qu'il est plus simple de décrire en quoi un projet est différent de ce "scénario type" que de répéter des commandes très comparables d'un projet à l'autre.

Maven exploite donc le concept de "Convention over configuration".



Convention plutôt que configuration

Maven définit donc un scénario type de construction d'un projet Java, avec des étapes clés et un ordre prédéfinies. Ce "Cycle de vie" est suffisament général pour être applicable à quasiment tous les projets. L'avantage des conventions est d'offrir à ceux qui les suivent un outil directement exploitable, sans configuration complémentaire. (Il faut noter qu'il n'est pas nécessaire de respecter ces conventions, mais dès lors que l'on sort des sentiers battus, une configuration supplémentaire doit être effectuée.) Maven propose donc une organisation par défaut, qui peut fonctionner sans plus d'indications pour tout projet qui la respecte.

La force de Maven est de présenter une structure conventionnelle, qui évite à chacun un travail rébarbatif de configuration. Maven reposant sur un scénario type de construction de projet Java, nous n'avons plus besoin d'indiquer la moindre commande. Il suffit de décrire en quoi le projet est différent du cas stéréotypé. Nous passons alors d'une approche programmatique à une solution déclarative.



Décrire plutôt que programmer

Maven fait le choix d'une approche déclarative, dans laquelle on indique les particularités du projet et non la manière de le construire. On précise l'emplacement des fichiers sources, les bibliothèques qui sont nécessaires, plutôt que la ligne de commande du compilateur. Ainsi, il ne s'agit plus de définir les options de "javac", mais de décrire une structure plus générale du projet, qui pourra être exploitée dans un autre contexte. Elle sera, par exemple, utilisée pour s'intégrer dans un IDE(Integrated Development Environment) comme Eclipse ou par les outils d'analyse de code.

L'utilisation des conventions et l'approche fondée sur la description du projet fait de Maven un outil à part, très différent de ANT ou de ses équivalents. En adoptant des conventions, les informations à déclarer pour que le projet soit pris en charge par Maven sont réduites à quelques lignes. La maintenance et l'ajout de nouvelles tâches au cours de la construction du projet s'en trouvent simplifiés. Un dévelopeur, issu d'un contexte très différent mais déjà utilisateur de l'outil, peut prendre le projet en main sans difficulté particulière.



<< page précédente page suivante >>

Valid XHTML 1.0!

Maven Logo