33
Apache Maven 3.x http://maven.apache.org Maxime Gréau http://mgreau.com Décembre 2011 Apache Maven 3.x Déjeuner Technique Nantes

Apache Maven 3

Embed Size (px)

DESCRIPTION

Slides de présentation du livre "Apache Maven - Maîtrisez l'infrastructure d'un projet Java EE"

Citation preview

Page 1: Apache Maven 3

Apache Maven 3.x

http://maven.apache.org

Maxime Gréauhttp://mgreau.com Décembre 2011

Apache Maven 3.x

Déjeuner Technique Nantes

Page 2: Apache Maven 3

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

Page 3: Apache Maven 3

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

Page 4: Apache Maven 3

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

Page 5: Apache Maven 3

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

Page 6: Apache Maven 3

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

Page 7: Apache Maven 3

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

Page 8: Apache Maven 3

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>

Page 9: Apache Maven 3

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

Page 10: Apache Maven 3

10

Infrastructure cible autour de Maven

Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011

Présentation de Apache Maven

Page 11: Apache Maven 3

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

Page 12: Apache Maven 3

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)

Page 13: Apache Maven 3

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

Page 14: Apache Maven 3

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

Page 15: Apache Maven 3

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>

Page 16: Apache Maven 3

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

Page 17: Apache Maven 3

17

Contexte professionnel

Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011

Maven dans un contexte professionnel

Page 18: Apache Maven 3

18

Eclipse IDE : plugin m2eclipse

Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011

Maven dans un contexte professionnel

Page 19: Apache Maven 3

19

Eclipse IDE : plugin m2eclipse

Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011

Maven dans un contexte professionnel

Page 20: Apache Maven 3

20

Eclipse IDE : plugin m2eclipse

Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011

Maven dans un contexte professionnel

Page 21: Apache Maven 3

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

Page 22: Apache Maven 3

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)

Page 23: Apache Maven 3

23

Intégration Continue - Jenkins

Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011

Maven dans un contexte professionnel

Page 24: Apache Maven 3

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

Page 25: Apache Maven 3

25

Gestionnaire de référentiels - Nexus

Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011

Maven dans un contexte professionnel

Page 26: Apache Maven 3

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

Page 27: Apache Maven 3

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

Page 28: Apache Maven 3

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

Page 29: Apache Maven 3

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

Page 30: Apache Maven 3

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

Page 31: Apache Maven 3

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

Page 32: Apache Maven 3

32

Livres en Anglais

Maxime Gréauhttp://mgreau.com Apache Maven 3.x - Décembre 2011

Documentation / Support / Livres

Page 33: Apache Maven 3

Questions

http://maven.apache.org

Maxime Gréauhttp://mgreau.com Décembre 2011

Apache Maven 3.x

Déjeuner Technique Nantes