Apache Maven est un outil logiciel pour la gestion et l'automatisation de production des projets logiciel Java. L'objectif recherché est comparable au système Make sous Unix: produire un logiciel à partir de ses sources, en optimisant les taches réalisées à cette fin, en garantissant le bon ordre de fabrication.
Il est semblable à l'outil Ant, mais fournit des moyens de configuration plus simples, basés sur le format XML. Maven est géré par l'organisation Apache Software Foundation. Précédemment Maven était une branche de l'organisation Jakarta Project.
Maven utilise un paradigme connu sous le nom de Project Object Model (POM) afin de décrire un projet logiciel, ses dépendances avec des modules externes et l'ordre à suivre pour sa production. Il est livré avec un grand nombre de taches pré-définies, comme la compilation de code Java ou encore sa modularisation.
Un élément clé et relativement spécifique de Maven est son aptitude à fonctionner en réseau. Une des motivations historique de cet outil est de fournir un moyen de synchroniser des projets indépendants: publication standardisée d'information, distribution automatique de modules jar. Ainsi en version de base, Maven peut dynamiquement télécharger du matériel sur des entrepôts logiciels connus. Il propose ainsi la synchronisation transparente de modules nécessaires.
UTILISATEURS:
A l'origine, Maven a été créé avec le projet Jakarta Alexandria. Ce produit s'adresse aux développeurs et est utilisé dans la gestion de nombreux projets Open Source (http://maven.apache.org/maven-1.x/about/powered.html et http://maven.apache.org/powered-by-m2.html)
COMMUNAUTE
Voir http://maven.apache.org/community.html
La communauté est active, au travers de mailing-lists, de wiki, etc.
FONCTIONNALITES
* automatisation de tâches : compilation, tests unitaires, déploiement des applications...
* gestion des dépendances
* génération des documentations concernant le projet
* génération de rapports
* Pour gérer les dépendances du projet, Maven utilise un ou plusieurs "repository" qui peuvent être locaux (.maven/repository) ou distants (http://www.ibiblio.org/maven par défaut)
* Maven peut être étendu par des plugins (permettant notamment son intégration dans Eclipse et NetBeans)
PERFORMANCE
Maven2 est plus petit et plus rapide que Maven 1.x
DOCUMENTATION
* Documentation en ligne et sous format PDF sur le site http://maven.apache.org/maven-1.x/Maven1.x
* Documentation en ligne pour http://maven.apache.org/Maven2
* Le site http://maven.apache.org/Maven2 référence également de nombreux ouvrages et articles
FACILITE D'EMPLOI
http://maven.apache.org/run-maven/index.html permet une mise en oeuvre rapide de Maven.
LIENS UTILES
* (en) http://maven.apache.org/background/history-of-maven.html
* (en) http://www.labo-sun.com/resource-fr-articles-1011-1-java-general-maven-2-0.htm
* (en) http://www.javaworld.com/javaworld/jw-10-2002/jw-1011-maven.html
* (en) http://www.mergere.com/m2book_download.jsp
* (fr) [http://java.developpez.com/faq/maven/?page=sommaire FAQ Maven2] (développez.com)
Contributeurs à cette fiche : Pascale Bezard (Bull) et Michel Viollet (Bull)