Вы находитесь на странице: 1из 33

Djeuner Technique

Nantes

Apache Maven 3.x

http://maven.apache.org

Maxime Grau
http://mgreau.com

Apache Maven 3.x


Dcembre 2011

Maxime Grau
Architecte Java EE
Service des Retraites de l'tat

Auteur du livre Apache Maven Matrisez l'infrastructure d'un projet Java EE (Editions ENI)
Prface et Relecture de Arnaud Hritier Commiter et PMC du projet Apache Maven

Contactez-moi http://mgreau.com Twitter : @mgreau

Maxime Grau
http://mgreau.com

Apache Maven 3.x


Dcembre 2011

Sommaire
Prsentation de Apache Maven Cycle de vie / Dpendances Maven dans un contexte professionnel Maven 2 vs Maven 3.0.x vs Maven 3.1 Documentation / Support / Livres

Maxime Grau
http://mgreau.com

Apache Maven 3.x


Dcembre 2011

Dfinition
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 Elment central dans la gestion d'une infrastructure de projet informatique : construction du livrable final gestion des bibliothques logicielles de dpendances, gnration de la documentation et rapport du projet dploiement des versions de livraison sur les plateformes cibles

Maxime Grau
http://mgreau.com

4 de Apache Maven Prsentation


Apache Maven 3.x - Dcembre 2011

Historique
Cr par Jason Van Zyl (Sonatype) Apache Maven fte ses 10 ans en 2011 Dernires releases:
Maven 2.0.11 Maven 2.2.1 Maven 3.0.3

Maxime Grau
http://mgreau.com

5 de Apache Maven Prsentation


Apache Maven 3.x - Dcembre 2011

La communaut (ASF)
Apache Software Foundation 4 rles principaux Sponsoris par des socits Sonatype Talend Apache Maven + de 50 personnes 26 PMC

Maxime Grau
http://mgreau.com

6 de Apache Maven Prsentation


Apache Maven 3.x - Dcembre 2011

Le POM (Project Object Model)


Descripteur du projet au format XML / 4 lments obligatoires :

modelVersion : prcise la version du modle 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 Grau
http://mgreau.com

7 de Apache Maven Prsentation


Apache Maven 3.x - Dcembre 2011

Le POM (Project Object Model)


5 catgories 1 Super POM
Hrit 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 Grau
http://mgreau.com

8 de Apache Maven Prsentation


Apache Maven 3.x - Dcembre 2011

Notions importantes
Rfrentiels (repositories) Gestion des artefacts
Rfrentiel local (local repository) Rfrentiels 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 Grau
http://mgreau.com

9 de Apache Maven Prsentation


Apache Maven 3.x - Dcembre 2011

Infrastructure cible autour de Maven

Maxime Grau
http://mgreau.com

10 de Apache Maven Prsentation


Apache Maven 3.x - Dcembre 2011

2e partie
Prsentation de Apache Maven Cycle de vie / Dpendances Maven dans un contexte professionnel Maven 2 vs Maven 3.0.x vs Maven 3.1 Documentation / Support / Livres

Maxime Grau
http://mgreau.com

11 Cycle de vie / Plugins / Dpendances


Apache Maven 3.x - Dcembre 2011

Cycle de vie
Un cycle de vie d'un projet est reprsent par un ensemble de phases
Chaque phase peut raliser plusieurs actions = goals

3 cycles de vie dfinis par Maven


Cycle de vie pour le nettoyage du projet (clean life cycle) Cycle de vie par dfaut (default life cycle) Cycle de vie pour le site du projet (site life cycle)

Maxime Grau
http://mgreau.com

12 Cycle de vie / Plugins / Dpendances


Apache Maven 3.x - Dcembre 2011

Cycle de vie pour le nettoyage du projet


La phase clean est la phase par dfaut de ce cycle
Mise en uvre par le plugin maven-clean-plugin

Plusieurs possibilits 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 Grau
http://mgreau.com

13 Cycle de vie / Plugins / Dpendances


Apache Maven 3.x - Dcembre 2011

Cycle de vie par dfaut


23 phases pour ce cycle
Chaque type de projets (JAR, EAR, WAR...) dfinit les goals xecuter et les associe des phases

Cycle de vie par dfaut pour la construction d'un JAR

Maxime Grau
http://mgreau.com

14 Cycle de vie / Plugins / Dpendances


Apache Maven 3.x - Dcembre 2011

Dpendances
Identifier et importer des rfrentiels distants vers le local les bibliothques logicielles ncessaires 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 Grau
http://mgreau.com

15 Cycle de vie / Plugins / Dpendances


Apache Maven 3.x - Dcembre 2011

3e partie
Prsentation de Apache Maven Cycle de vie / Dpendances Maven dans un contexte professionnel Maven 2 vs Maven 3.0.x vs Maven 3.1 Documentation / Support / Livres

Maxime Grau
http://mgreau.com

Maven dans16 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Contexte professionnel

Maxime Grau
http://mgreau.com

Maven dans17 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Eclipse IDE : plugin m2eclipse

Maxime Grau
http://mgreau.com

Maven dans18 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Eclipse IDE : plugin m2eclipse

Maxime Grau
http://mgreau.com

Maven dans19 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Eclipse IDE : plugin m2eclipse

Maxime Grau
http://mgreau.com

Maven dans20 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Tests Intgration
Dploiement et tests dans le container cible

Maxime Grau
http://mgreau.com

Maven dans21 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Intgration Continue
Permet l'uniformit, l'automatisation et le dploiement des constructions (Continuum, Jenkins, Hudson)

Maxime Grau
http://mgreau.com

Maven dans22 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Intgration Continue - Jenkins

Maxime Grau
http://mgreau.com

Maven dans23 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Gestionnaire de rfrentiels
Logiciel qui permet de centraliser et masquer la complexit lie aux dpts de bibliothques logicielles (Nexus, Artifactory, Archiva)

SANS GESTIONNAIRE AVEC GESTIONNAIRE Maxime Grau


http://mgreau.com

Maven dans24 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

Gestionnaire de rfrentiels - Nexus

Maxime Grau
http://mgreau.com

Maven dans25 un contexte professionnel


Apache Maven 3.x - Dcembre 2011

4e partie
Prsentation de Apache Maven Cycle de vie / Dpendances Maven dans un contexte professionnel Maven 2 vs Maven 3.0.x vs Maven 3.1 Documentation / Support / Livres

Maxime Grau
http://mgreau.com

26 Documentation / Support / Livres


Apache Maven 3.x - Dcembre 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 => problmes

Maven 3 : compatibilit avec Maven 2.2.x


700 tests d'intgration 7 versions alpha et 3 btas

Maven 3 : Construction en parallle Maven 3 : Amlioration des performances Maven 3 : rcrit en Java 5 Maven 3 : nouvelle API pour gestion des artefacts et rfrentiels Maven 3 : meilleures gestion des erreurs Maven 3 : plus de contrles des POM Maven 3 : plugins uniquement grs par <pluginRepositories> Maven 3.1 : Mixins
Maxime Grau
http://mgreau.com

27

Apache Maven 3.x


Dcembre 2011

5e partie
Prsentation de Apache Maven Cycle de vie / Dpendances Maven dans un contexte professionnel Maven 2 vs Maven 3.0.x vs Maven 3.1 Documentation / Support / Livres

Maxime Grau
http://mgreau.com

28 Documentation / Support / Livres


Apache Maven 3.x - Dcembre 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 (Franais)


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 Grau
http://mgreau.com

29 Documentation / Support / Livres


Apache Maven 3.x - Dcembre 2011

Livres en Franais

Apache Maven

Matrisez l'infrastructure d'un projet Java EE

406 pages 100+ illustrations 1 application fil rouge Maven 2 et 3 1 site Web ddi

http://mvnbook.mgreau.com/

Disponible

chez l'diteur http://www.editions-eni.fr Amazon.fr / fnac.com ...


30 Documentation / Support / Livres
Apache Maven 3.x - Dcembre 2011

Maxime Grau
http://mgreau.com

Livres en Franais

Apache Maven
Nicolas De Loof Arnaud Hritier Disponible

Versions 2 et 3

chez l'diteur http://www.pearson.fr/ Amazon.fr / fnac.com ...

Maxime Grau
http://mgreau.com

31 Documentation / Support / Livres


Apache Maven 3.x - Dcembre 2011

Livres en Anglais

Maxime Grau
http://mgreau.com

32 Documentation / Support / Livres


Apache Maven 3.x - Dcembre 2011

Djeuner Technique

Nantes

Questions

http://maven.apache.org

Maxime Grau
http://mgreau.com

Apache Maven 3.x


Dcembre 2011

Вам также может понравиться