SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemeStéphane Traumat
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRSLilia Sfaxi
 
Do we need SOLID principles during software development?
Do we need SOLID principles during software development?Do we need SOLID principles during software development?
Do we need SOLID principles during software development?Anna Shymchenko
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 

Tendances (20)

Spring MVC
Spring MVCSpring MVC
Spring MVC
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
Do we need SOLID principles during software development?
Do we need SOLID principles during software development?Do we need SOLID principles during software development?
Do we need SOLID principles during software development?
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
React-cours.pdf
React-cours.pdfReact-cours.pdf
React-cours.pdf
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 

En vedette

Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérienceKhanh Maudoux
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueRossi Oddet
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio Fernando Boaglio
 
Continuous inspection with Sonar
Continuous inspection with SonarContinuous inspection with Sonar
Continuous inspection with Sonargaudol
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for DummiesTomer Gabel
 
Test unitaire
Test unitaireTest unitaire
Test unitaireIsenDev
 
Telecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfTelecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfwebreaker
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 OverviewMike Ensor
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 

En vedette (20)

Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérience
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratique
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio Análise de qualidade de código com Sonar - Fernando Boaglio
Análise de qualidade de código com Sonar - Fernando Boaglio
 
Continuous inspection with Sonar
Continuous inspection with SonarContinuous inspection with Sonar
Continuous inspection with Sonar
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Maven
Maven Maven
Maven
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for Dummies
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
 
Telecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfTelecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdf
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Sonar Metrics
Sonar MetricsSonar Metrics
Sonar Metrics
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 

Similaire à Apache Maven 3

Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 
Présentation prime facesfinal
Présentation prime facesfinalPrésentation prime facesfinal
Présentation prime facesfinalAymen Drira
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 
Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Ludovic A
 
20080513 - Paris Jug - Maven à La Demande
20080513 - Paris Jug - Maven à La Demande20080513 - Paris Jug - Maven à La Demande
20080513 - Paris Jug - Maven à La DemandeArnaud Héritier
 
2018.11.15 Lyon JUG Maven 3&5 et java 9
2018.11.15 Lyon JUG Maven 3&5 et java 92018.11.15 Lyon JUG Maven 3&5 et java 9
2018.11.15 Lyon JUG Maven 3&5 et java 9Hervé Boutemy
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Xavier NOPRE
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natifHenri Gomez
 
Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via mavenFranck SIMON
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSyrine Ben aziza
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileSylla Mamoudou
 

Similaire à Apache Maven 3 (20)

Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
Soiree Maven 2
Soiree Maven 2Soiree Maven 2
Soiree Maven 2
 
Présentation1
Présentation1Présentation1
Présentation1
 
gradle_nantesjug
gradle_nantesjuggradle_nantesjug
gradle_nantesjug
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Gradle_ToursJUG
Gradle_ToursJUGGradle_ToursJUG
Gradle_ToursJUG
 
Présentation prime facesfinal
Présentation prime facesfinalPrésentation prime facesfinal
Présentation prime facesfinal
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas
 
20080513 - Paris Jug - Maven à La Demande
20080513 - Paris Jug - Maven à La Demande20080513 - Paris Jug - Maven à La Demande
20080513 - Paris Jug - Maven à La Demande
 
2018.11.15 Lyon JUG Maven 3&5 et java 9
2018.11.15 Lyon JUG Maven 3&5 et java 92018.11.15 Lyon JUG Maven 3&5 et java 9
2018.11.15 Lyon JUG Maven 3&5 et java 9
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Gradle_ToulouseJUG
Gradle_ToulouseJUGGradle_ToulouseJUG
Gradle_ToulouseJUG
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif
 
Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via maven
 
SVN to GitHUb
SVN to GitHUbSVN to GitHUb
SVN to GitHUb
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces Mobile
 

Apache Maven 3

  • 1. 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
  • 2. 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
  • 3. 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
  • 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éau 4 Présentation de Apache Maven http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. Infrastructure cible autour de Maven Maxime Gréau 10 Présentation de Apache Maven http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. Contexte professionnel Maxime Gréau Maven dans17 contexte professionnel un http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 18. Eclipse IDE : plugin m2eclipse Maxime Gréau Maven dans18 contexte professionnel un http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 19. Eclipse IDE : plugin m2eclipse Maxime Gréau Maven dans19 contexte professionnel un http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 20. Eclipse IDE : plugin m2eclipse Maxime Gréau Maven dans20 contexte professionnel un http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 21. 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
  • 22. 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
  • 23. Intégration Continue - Jenkins Maxime Gréau Maven dans23 contexte professionnel un http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 24. 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
  • 25. Gestionnaire de référentiels - Nexus Maxime Gréau Maven dans25 contexte professionnel un http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. Livres en Anglais Maxime Gréau 32 Documentation / Support / Livres http://mgreau.com Apache Maven 3.x - Décembre 2011
  • 33. Déjeuner Technique Nantes Questions http://maven.apache.org Maxime Gréau Apache Maven 3.x http://mgreau.com Décembre 2011