Upload
maxime-greau
View
4.019
Download
4
Embed Size (px)
DESCRIPTION
Slides de présentation du livre "Apache Maven - Maîtrisez l'infrastructure d'un projet Java EE"
Citation preview
Apache Maven 3.x
http://maven.apache.org
Maxime Gréauhttp://mgreau.com Décembre 2011
Apache Maven 3.x
Déjeuner Technique Nantes
2Maxime Gréauhttp://mgreau.com
Maxime Gréau
Décembre 2011Apache Maven 3.x
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-moihttp://mgreau.comTwitter : @mgreau
3Maxime Gréauhttp://mgreau.com
Sommaire
Décembre 2011Apache Maven 3.x
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
4
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éauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Présentation de Apache Maven
5
Historique
Créé par Jason Van Zyl (Sonatype)
Apache Maven fête ses 10 ans en 2011
Dernières releases : Maven 2.0.11Maven 2.2.1Maven 3.0.3
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Présentation de Apache Maven
6
La communauté (ASF)
Apache Software Foundation4 rôles principaux
Sponsorisé par des sociétésSonatypeTalend
Apache Maven+ de 50 personnes26 PMC
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Présentation de Apache Maven
7
Le POM (Project Object Model)
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Présentation de Apache Maven
<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>
Exemple de fichier pom.xml
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 nommageartifactId : 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
8
Le POM (Project Object Model)
5 catégories
1 Super POMHérité par tous les POM
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Présentation de Apache Maven
<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>
9
Référentiels (repositories) – Gestion des artefactsRéférentiel local (local repository)Référentiels distants (remote repositories)
Fichiers settings.xml - Configurationsettings.xml local : ${user.home}/.m2/settings.xmlsettings.xml global : $M2_HOME/conf/settings.xml
Structure de projet standard
Notions importantes
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Présentation de Apache Maven
${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/sitepom.xml
10
Infrastructure cible autour de Maven
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Présentation de Apache Maven
11
2e partie
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Cycle de vie / Plugins / Dépendances
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
12
Cycle de vie
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Cycle de vie / Plugins / Dépendances
Un cycle de vie d'un projet est représenté par un ensemble de phasesChaque phase peut réaliser plusieurs actions = goals
3 cycles de vie définis par MavenCycle 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)
13
Cycle de vie pour le nettoyage du projet
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Cycle de vie / Plugins / Dépendances
La phase clean est la phase par défaut de ce cycleMise en œuvre par le plugin maven-clean-plugin
Plusieurs possibilités pour appeler le goal cleanmvn cleanmvn clean:cleanmvn org.apache.maven.plugins:maven-clean-plugin:cleanmvn org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean
14
Cycle de vie par défaut
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Cycle de vie / Plugins / Dépendances
23 phases pour ce cycleChaque 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
15
Dépendances
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Cycle de vie / Plugins / 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>
16
3e partie
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
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
17
Contexte professionnel
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
18
Eclipse IDE : plugin m2eclipse
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
19
Eclipse IDE : plugin m2eclipse
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
20
Eclipse IDE : plugin m2eclipse
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
21
Tests Intégration
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
Déploiement et tests dans le container cible
22
Intégration Continue
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
Permet l'uniformité, l'automatisation et le déploiement des constructions(Continuum, Jenkins, Hudson)
23
Intégration Continue - Jenkins
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
24
Gestionnaire de référentiels
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
Logiciel qui permet de centraliser et masquer la complexité liée aux dépôts de bibliothèques logicielles (Nexus, Artifactory, Archiva)
SANS GESTIONNAIREAVEC GESTIONNAIRE
25
Gestionnaire de référentiels - Nexus
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Maven dans un contexte professionnel
26
4e partie
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Documentation / Support / Livres
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
27Maxime Gréauhttp://mgreau.com
Maven 2 / 3.x / 3.1
Décembre 2011Apache Maven 3.x
CritiquesMigration de maven 1 vers Maven 2 => impossibleMise à jour de maven 2.0.x vers 2.x => problèmes
Maven 3 : compatibilité avec Maven 2.2.x700 tests d'intégration7 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
28
5e partie
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Documentation / Support / Livres
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
29
Documentation / Support
Docs officielles (Anglais)http://maven.apache.orghttp://maven.apache.org/guides/index.htmlhttp://maven.apache.org/pluginshttp://mojo.codehaus.org
Listes de diffusions (Anglais)[email protected]@[email protected]
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/BooksBlog : http://www.sonatype.com/people/
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Documentation / Support / Livres
30
Livres en Français
Apache MavenMaî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.frAmazon.fr / fnac.com ...
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Documentation / Support / Livres
31
Livres en Français
Apache MavenVersions 2 et 3
Nicolas De Loof Arnaud Héritier
Disponible chez l'éditeur http://www.pearson.fr/Amazon.fr / fnac.com ...
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Documentation / Support / Livres
32
Livres en Anglais
Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011
Documentation / Support / Livres
Questions
http://maven.apache.org
Maxime Gréauhttp://mgreau.com Décembre 2011
Apache Maven 3.x
Déjeuner Technique Nantes