Déjeuner Technique Nantes
Apache Maven 3.x
http://maven.apache.org
Maxime Gréau Apache Maven 3.x
http://mgreau.com Décembre 2011
Maxime Gréau
Architecte Java EE
Service des Retraites de l'État
Auteur du livre Apache Maven -
Maîtrisez l'infrastructure d'un projet Java EE
(Editions ENI)
Préface et Relecture de Arnaud Héritier
Commiter et PMC du projet Apache
Maven
Contactez-moi
http://mgreau.com
Twitter : @mgreau
Maxime Gréau 2 Apache Maven 3.x
http://mgreau.com Décembre 2011
Sommaire
Présentation de Apache Maven
Cycle de vie / Dépendances
Maven dans un contexte professionnel
Maven 2 vs Maven 3.0.x vs Maven 3.1
Documentation / Support / Livres
Maxime Gréau 3 Apache Maven 3.x
http://mgreau.com Décembre 2011
Définition
Apache Maven est un logiciel de gestion de projets et un
outil de construction, basé sur :
le concept du POM (Project Object Model)
le respect de conventions et normes standards
Elément central dans la gestion d'une infrastructure de
projet informatique :
construction du livrable final
gestion des bibliothèques logicielles de dépendances,
génération de la documentation et rapport du projet
déploiement des versions de livraison sur les plate-
formes cibles
Maxime Gréau 4
Présentation de Apache Maven
http://mgreau.com Apache Maven 3.x - Décembre 2011
Historique
Créé par Jason Van Zyl (Sonatype)
Apache Maven fête ses 10 ans en 2011
Dernières releases :
Maven 2.0.11
Maven 2.2.1
Maven 3.0.3
Maxime Gréau 5
Présentation de Apache Maven
http://mgreau.com Apache Maven 3.x - Décembre 2011
La communauté (ASF)
Apache Software Foundation
4 rôles principaux
Sponsorisé par des sociétés
Sonatype
Talend
Apache Maven
+ de 50 personnes
26 PMC
Maxime Gréau 6
Présentation de Apache Maven
http://mgreau.com Apache Maven 3.x - Décembre 2011
Le POM (Project Object Model)
Descripteur du projet au format XML / 4 éléments
obligatoires :
modelVersion : précise la version du modèle objet utilisé
groupId : identifie le projet dans un espace de nommage
artifactId : correspond à la valeur principale contenue dans le nom
du fichier de sortie construit par le projet (fichier XML ou archive)
version : donne la version en cours du projet
Exemple de fichier pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" >
<modelVersion>4.0.0</modelVersion>
<groupId>com.mgreau.mvnbook</groupId>
<artifactId>mvnbook-persistence</artifactId>
<version>1.0.0-SNAPSHOT</version>
</project>
Maxime Gréau 7
Présentation de Apache Maven
http://mgreau.com Apache Maven 3.x - Décembre 2011
Le POM (Project Object Model)
5 catégories
1 Super POM
Hérité par tous les POM
<project>
<modelVersion>4.0.0</modelVersion>
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
...
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
...
</pluginRepository>
</pluginRepositories>
…
</project>
Maxime Gréau 8
Présentation de Apache Maven
http://mgreau.com Apache Maven 3.x - Décembre 2011
Notions importantes
Référentiels (repositories) – Gestion des artefacts
Référentiel local (local repository)
Référentiels distants (remote repositories)
Fichiers settings.xml - Configuration
settings.xml local : ${user.home}/.m2/settings.xml
settings.xml global : $M2_HOME/conf/settings.xml
Structure de projet standard
${project.basedir}/src/main/java
${project.basedir}/src/main/resources
${project.basedir}/src/test/java
${project.basedir}/src/test/resources p
${project.basedir}/src/main/scripts
${project.basedir}/target
${project.basedir}/target/classes
${project.basedir}/target/test-classes
${project.basedir}/target/site
pom.xml
Maxime Gréau 9
Présentation de Apache Maven
http://mgreau.com Apache Maven 3.x - Décembre 2011
Infrastructure cible autour de Maven
Maxime Gréau 10
Présentation de Apache Maven
http://mgreau.com Apache Maven 3.x - Décembre 2011
2e partie
Présentation de Apache Maven
Cycle de vie / Dépendances
Maven dans un contexte professionnel
Maven 2 vs Maven 3.0.x vs Maven 3.1
Documentation / Support / Livres
Maxime Gréau 11
Cycle de vie / Plugins / Dépendances
http://mgreau.com Apache Maven 3.x - Décembre 2011
Cycle de vie
Un cycle de vie d'un projet est représenté par un ensemble de phases
Chaque phase peut réaliser plusieurs actions = goals
3 cycles de vie définis par Maven
Cycle de vie pour le nettoyage du projet (clean life cycle)
Cycle de vie par défaut (default life cycle)
Cycle de vie pour le site du projet (site life cycle)
Maxime Gréau 12
Cycle de vie / Plugins / Dépendances
http://mgreau.com Apache Maven 3.x - Décembre 2011
Cycle de vie pour le nettoyage du projet
La phase clean est la phase par défaut de ce cycle
Mise en œuvre par le plugin maven-clean-plugin
Plusieurs possibilités pour appeler le goal clean
mvn clean
mvn clean:clean
mvn org.apache.maven.plugins:maven-clean-plugin:clean
mvn org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean
Maxime Gréau 13
Cycle de vie / Plugins / Dépendances
http://mgreau.com Apache Maven 3.x - Décembre 2011
Cycle de vie par défaut
23 phases pour ce cycle
Chaque type de projets (JAR, EAR, WAR...) définit les goals à éxecuter et
les associe à des phases
Cycle de vie par défaut pour la construction d'un JAR
Maxime Gréau 14
Cycle de vie / Plugins / Dépendances
http://mgreau.com Apache Maven 3.x - Décembre 2011
Dépendances
Identifier et importer des référentiels distants vers le local les
bibliothèques logicielles nécessaires au fonctionnement du projet
<project>
...
<artifactId>mvnbook-persistence</artifactId>
...
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>4.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.5.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
…
</project>
Maxime Gréau 15
Cycle de vie / Plugins / Dépendances
http://mgreau.com Apache Maven 3.x - Décembre 2011
3e partie
Présentation de Apache Maven
Cycle de vie / Dépendances
Maven dans un contexte professionnel
Maven 2 vs Maven 3.0.x vs Maven 3.1
Documentation / Support / Livres
Maxime Gréau Maven dans16 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Contexte professionnel
Maxime Gréau Maven dans17 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Eclipse IDE : plugin m2eclipse
Maxime Gréau Maven dans18 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Eclipse IDE : plugin m2eclipse
Maxime Gréau Maven dans19 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Eclipse IDE : plugin m2eclipse
Maxime Gréau Maven dans20 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Tests Intégration
Déploiement et tests dans le container cible
Maxime Gréau Maven dans21 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Intégration Continue
Permet l'uniformité, l'automatisation et le déploiement des constructions
(Continuum, Jenkins, Hudson)
Maxime Gréau Maven dans22 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Intégration Continue - Jenkins
Maxime Gréau Maven dans23 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Gestionnaire de référentiels
Logiciel qui permet de centraliser et masquer la complexité liée aux
dépôts de bibliothèques logicielles (Nexus, Artifactory, Archiva)
SANS GESTIONNAIRE
AVEC GESTIONNAIRE
Maxime Gréau Maven dans24 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
Gestionnaire de référentiels - Nexus
Maxime Gréau Maven dans25 contexte professionnel
un
http://mgreau.com Apache Maven 3.x - Décembre 2011
4e partie
Présentation de Apache Maven
Cycle de vie / Dépendances
Maven dans un contexte professionnel
Maven 2 vs Maven 3.0.x vs Maven 3.1
Documentation / Support / Livres
Maxime Gréau 26
Documentation / Support / Livres
http://mgreau.com Apache Maven 3.x - Décembre 2011
Maven 2 / 3.x / 3.1
Critiques
Migration de maven 1 vers Maven 2 => impossible
Mise à jour de maven 2.0.x vers 2.x => problèmes
Maven 3 : compatibilité avec Maven 2.2.x
700 tests d'intégration
7 versions alpha et 3 bétas
Maven 3 : Construction en parallèle
Maven 3 : Amélioration des performances
Maven 3 : réécrit en Java 5
Maven 3 : nouvelle API pour gestion des artefacts et référentiels
Maven 3 : meilleures gestion des erreurs
Maven 3 : plus de contrôles des POM
Maven 3 : plugins uniquement gérés par <pluginRepositories>
Maven 3.1 : Mixins
Maxime Gréau 27 Apache Maven 3.x
http://mgreau.com Décembre 2011
5e partie
Présentation de Apache Maven
Cycle de vie / Dépendances
Maven dans un contexte professionnel
Maven 2 vs Maven 3.0.x vs Maven 3.1
Documentation / Support / Livres
Maxime Gréau 28
Documentation / Support / Livres
http://mgreau.com Apache Maven 3.x - Décembre 2011
Documentation / Support
Docs officielles (Anglais)
http://maven.apache.org
http://maven.apache.org/guides/index.html
http://maven.apache.org/plugins
http://mojo.codehaus.org
Listes de diffusions (Anglais)
users@maven.apache.org
dev@maven.apache.org
announce@maven.apache.org
Forums / FAQ / Guide (Français)
FAQ : http://java.developpez.com/faq/maven/
Forum : http://www.developpez.net/forums/f319/java/edi-outils-java/build/maven/
Guide : http://maven-guide-fr.erwan-alliaume.com/
Ressources de Sonatype (Anglais)
Livres gratuits : http://www.sonatype.com/Support/Books
Blog : http://www.sonatype.com/people/
Maxime Gréau 29
Documentation / Support / Livres
http://mgreau.com Apache Maven 3.x - Décembre 2011
Livres en Français
Apache Maven
Maîtrisez l'infrastructure
d'un projet Java EE
406 pages
100+ illustrations
1 application fil rouge
Maven 2 et 3
1 site Web dédié
http://mvnbook.mgreau.com/
Disponible
chez l'éditeur http://www.editions-eni.fr
Amazon.fr / fnac.com ...
Maxime Gréau 30
Documentation / Support / Livres
http://mgreau.com Apache Maven 3.x - Décembre 2011
Livres en Français
Apache Maven
Versions 2 et 3
Nicolas De Loof
Arnaud Héritier
Disponible
chez l'éditeur http://www.pearson.fr/
Amazon.fr / fnac.com ...
Maxime Gréau 31
Documentation / Support / Livres
http://mgreau.com Apache Maven 3.x - Décembre 2011
Livres en Anglais
Maxime Gréau 32
Documentation / Support / Livres
http://mgreau.com Apache Maven 3.x - Décembre 2011
Déjeuner Technique Nantes
Questions
http://maven.apache.org
Maxime Gréau Apache Maven 3.x
http://mgreau.com Décembre 2011