Apache Maven 3

Preview:

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)users@maven.apache.orgdev@maven.apache.organnounce@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/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

Recommended