SlideShare uma empresa Scribd logo
1 de 87
Baixar para ler offline
Maven par la pratique
Qui suis-je ?

     Rossi Oddet
 Consultant IT chez SQLI
  Manager JCertif Lab

   Twitter : @rossioddet
Blog: http://blog.roddet.com


                               2
Maven c’est quoi ?



        3
Votre outil de gestion de projet !


                 4
Que peut-on concrètement faire
            avec ?


               5
Quelques services rendus à votre
                  projet                                                                                                                                G




       Créez !                                     Compilez !                                                Testez !
                                      Gérer les dépendances, la version du JDK, ...           Exécutez des tests unitaires, d’intégrations, ...
à l’aide de modèles




       Versionnez !                             Assemblez !                                     Archivez !
                                           JAR, WAR, EAR, ZIP, ...                    dans un dépôt local ou distant
 Gérer les versions de votre projet




              Qualifiez !                                        Reportez !                                     Déployez !
                                                                                                    dans un serveur d’application local, distant, ...
  Vérifier la qualité de vos projets                 Générer/envoyer divers rapports




                                                                      6
Maven, toute une philosophie

“convention plutôt que configuration”

                                      “standard plutôt qu’outil”

      “même modèle pour tous les projets”

                                      “mvn install pour tout le monde”


                                  7
Installer Maven
•   Rendez-vous à la page de téléchargement : http://maven.apache.org/
    download.html

•   Décompressez dans le répertoire de votre choix le fichier apache-
    maven-3.0.4-bin.zip

•   Mettre le répertoire [MAVEN_INSTALL]/bin dans la variable Path

•   Exécutez la commande : mvn -version


                                           8
Le fichier settings.xml

Unique fichier XML de configuration


                 “convention plutôt que configuration”




                            9
La carte d’identité d’un projet

         République de
               groupId : com.jcertif
               artifactId : projet-simple
                 version : 1.0.0
              packaging : jar




                     10
L’archivage d’un projet
<Répertoire archive> / <groupId> / <artifactId> / <version> / <artifactId>-<version>.<packaging>



                              Par exemple :
.m2/repository/com/jcertif/projet-simple/1.0.0/mon-projet-simple-1.0.0.jar




                                               11
La structure par défaut d’un projet
          mon-projet
                 /pom.xml
                 /src
                      /main
                              /java
                              /resources
                              /webapp
                     /test
                              /java
                              /resources
                  /target

                       12
TP 1 : Créer un projet simple

mvn archetype:generate -DgroupId=com.jcertif -DartifactId=projet-simple -Dversion=1.0.0 -
DinteractiveMode=false




                                              13
Les fichiers générés
projet-simple
                /pom.xml
                /src
                    /main
                         /java
                              /com
                                  /jcertif
                                                  /App.java
                   /test
                           /java
                                /com
                                       /jcertif
                                                  /AppTest.java




                            14
Fichier pom.xml pour
     configurer votre projet




15
Classe App.java




       16
Classe AppTest.java
                      pom.xml




         17
Construisez votre projet


•   Se positionner dans le répertoire “mon-projet-simple”

•   Exécutez la commande : mvn install




                                    18
Cycle vie - mvn install




           19
Fichiers générés par mvn install
     projet-simple
                 /target
                         /projet-simple-1.0-SNAPSHOT.jar
                        /classes
                             /com
                                  /jcertif
                                           /App.class
                        /maven-archiver
                                           /pom.properties
                       /surfire-reports
                                           /com.jcertif.AppTest.txt
                                           /TEST-com.jcertif.AppTest.xml
                      /test-classes
                            /com
                                  /jcertif
                                         /AppTest.class


                                     20
Exécutez l’application


java -cp target/projet-simple-1.0-SNAPSHOT.jar com.jcertif.App




                             21
Modifier la classe App.java




            22
Exécutez : mvn install
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /dev/jcertif/projet-simple/src/main/java/com/jcertif/App.java:[11,8] cannot find
symbol
symbol : class JFrame
location: class com.jcertif.App
[ERROR] /dev/jcertif/projet-simple/src/main/java/com/jcertif/App.java:[11,28] cannot find
symbol
symbol : class JFrame
location: class com.jcertif.App
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.072s
[INFO] Finished at: Sun Aug 19 14:47:03 CEST 2012
[INFO] Final Memory: 8M/81M
[INFO] ------------------------------------------------------------------------

                                         23
Corriger la classe
Les ressources du JDK
 sont accessibles sans
 ajout de dépendance




                          24
Exécutez : mvn install

  [INFO] ------------------------------------------------------------------------
  [INFO] BUILD SUCCESS
  [INFO] ------------------------------------------------------------------------
  [INFO] Total time: 3.345s
  [INFO] Finished at: Sun Aug 19 15:09:01 CEST 2012
  [INFO] Final Memory: 9M/81M
  [INFO] ------------------------------------------------------------------------




                                    25
Modifier la classe AppTest.java




Mise en échec du test

                        26
Exécutez mvn install
-------------------------------------------------------
T E ST S
-------------------------------------------------------
Running com.jcertif.AppTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.019 sec <<< FAILURE!

Results :

Failed tests: testApp(com.jcertif.AppTest)

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.358s
[INFO] Finished at: Sun Aug 19 15:25:19 CEST 2012
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------


                                      27
Exécutez
mvn install -Dmaven.test.skip

      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 1.787s
      [INFO] Finished at: Sun Aug 19 15:27:25 CEST 2012
      [INFO] Final Memory: 5M/81M
      [INFO] ------------------------------------------------------------------------



       Pas d’exécution des tests


                                       28
Où récupérer les dépendances ?
                                   2 - Si pas trouvé en local, recherche via le web
      mvn install                                                                                Dépôt distant
                                                                                      par défaut : http://repo.maven.org/maven2/


                   1 - Recherche en local




          Dépôt local
par défaut : [user.dir]/.m2/repository




                                                               29
Différents types de dépendance
•   compile (par défaut) : indispensable à la compilation

•   runtime : inutile à la compilation mais indispensable à l’exécution

•   test : utile uniquement à la compilation et l’exécution des tests

•   provided : indispensable à la compilation, dépendance fournie par
    l’environnement d’exécution.

•   system : dépendance à récupérer en local, hors dépôt Maven => à ne
    pas utiliser dans la mesure du possible

                                      30
Transitivité des dépendances

                                          épen d de Projet C
                                         d
            dépend de
Projet A                    Projet B
                                        dép
                                            end d
                                                 e    Projet D


=>     Le projet A peut utiliser les classes des projets B, C et D


                                31                               dépend de
TP 2 : Gérer les dépendances

     Objectif :
     - utiliser la bibliothèque commons-lang
     - visualiser/analyser les dépendances
     - exclusion de bibliothèque




                       32
Modifier la classe App.java

      Utilisation de la classe
RandomStringUtils de la bibliothèque
          commons-lang




                                       33
mvn install
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /dev/jcertif/projet-simple/src/main/java/com/jcertif/App.java:[3,25] package
org.apache.commons does not exist
[ERROR] /dev/jcertif/projet-simple/src/main/java/com/jcertif/App.java:[13,24] cannot find symbol
symbol : variable RandomStringUtils
location: class com.jcertif.App
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.508s
[INFO] Finished at: Sun Aug 19 17:04:31 CEST 2012
[INFO] Final Memory: 8M/81M
[INFO] ------------------------------------------------------------------------

                                        34
Ajouter la dépendance
   commons-lang




          35
mvn install

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.771s
[INFO] Finished at: Sun Aug 19 17:33:30 CEST 2012
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------




                                      36
Ajouter une dépendance vers
      Hibernate-core




             37
mvn dependency:tree
[INFO]
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ projet-simple ---
[INFO] com.jcertif:projet-simple:jar:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- commons-lang:commons-lang:jar:2.6:compile
[INFO] - org.hibernate:hibernate-core:jar:4.1.2:compile
[INFO] +- antlr:antlr:jar:2.7.7:compile
[INFO] +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile
[INFO] +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile
[INFO] +- dom4j:dom4j:jar:1.6.1:compile
[INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile
[INFO] +- org.javassist:javassist:jar:3.15.0-GA:compile
[INFO] - org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile




                                                38
Exclure la bibliothèque dom4j




              39
mvn dependency:tree
[INFO]
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ projet-simple ---
[INFO] com.jcertif:projet-simple:jar:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- commons-lang:commons-lang:jar:2.6:compile
[INFO] - org.hibernate:hibernate-core:jar:4.1.2:compile
[INFO] +- antlr:antlr:jar:2.7.7:compile
[INFO] +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile
[INFO] +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile
[INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile
[INFO] +- org.javassist:javassist:jar:3.15.0-GA:compile
[INFO] - org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile

                         pas de dépendance vers dom4j

                                               40
mvn dependency:analyze

[INFO]
[INFO] <<< maven-dependency-plugin:2.1:analyze (default-cli) @ projet-simple <<<
[INFO]
[INFO] --- maven-dependency-plugin:2.1:analyze (default-cli) @ projet-simple ---
[WARNING] Unused declared dependencies found:
[WARNING] org.hibernate:hibernate-core:jar:4.1.2:compile




                                       41
TP 3 : Utiliser les plugins Maven


     Illustration avec le plugin exec-maven-plugin




                          42
Modifier le fichier pom.xml




            43
mvn install

[INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
Chaine = 1840905304
[INFO]




                                44
TP 4 : Utiliser les ressources


Objectif : créer un fichier de propriétés et l’utiliser dans son application




                                   45
Créer un fichier de paramétrage

     projet-simple
                 /src
                        /main
                                /resources
                                             /param.properties




                                        46
Ajouter la propriété carac.count

                          param.properties


          carac.count=4




                    47
Utiliser la propriété carac.count
           dans App.java




                48
mvn install

[INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
Chaine = 0166




                              49
Modifier la propriété carac.count

                          param.properties


         carac.count=20




                    50
mvn install

[INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
Chaine = 92760895216065926312




                             51
TP 5 : Utiliser des variables


   Objectif : variabiliser la construction d’un projet




                          52
Compléter le fichier
 params.properties

                     param.properties


   carac.count=4
   projet.nom=${project.artifactId}
   projet.version=${project.version}



               53
Modifier la classe App.java




            54
mvn install
INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
####################################
Nom projet : ${project.artifactId}
Version projet : ${project.version}
####################################
Chaine = 53577921925530242406




                                55
Activer la mise à jour des variables
        dans les ressources




                 56
mvn install
[INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
####################################
Nom projet : projet-simple
Version projet : 1.0-SNAPSHOT
####################################
Chaine = 78559487063744308397




                          57
Créer la propriété carac.count
   dans le fichier pom.xml




              58
Utiliser la variable ${carac.count}

                            param.properties


          carac.count=${carac.count}
          projet.nom=${project.artifactId}
          projet.version=${project.version}



                      59
mvn install
[INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
####################################
Nom projet : projet-simple
Version projet : 1.0-SNAPSHOT
####################################
Chaine = 1778566838937




                                60
TP 6 : Utiliser les profils


 Exécuter l’application uniquement dans un profil




                      61
Supprimer l’utilisation du plugin
      exec-maven-plugin




                62
Créer le profil “exec-appli”




             63
mvn install


=> Pas d’exécution de l’application




                64
mvn install -Pexec-appli
[INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
####################################
Nom projet : projet-simple
Version projet : 1.0-SNAPSHOT
####################################
Chaine = 6180915411835




                                65
Une valeur de propriété par profil




                66
mvn install -Pexec-appli
[INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
####################################
Nom projet : projet-simple
Version projet : 1.0-SNAPSHOT
####################################
Chaine = 70




                                67
Activer un profil par défaut




             68
mvn install
[INFO]
[INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<<
[INFO]
[INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple ---
####################################
Nom projet : projet-simple
Version projet : 1.0-SNAPSHOT
####################################
Chaine = 10




                                69
TP 4 : Projet multimodules


Objectif : créer un ensemble de projet interdépendant




                         70
Créer un projet “parent”

mvn archetype:generate -DgroupId=com.jcertif -DartifactId=projet-parent -Dversion=1.0.0 -
DinteractiveMode=false




                                              71
Supprimer le répertoire /src et
  Modifier le fichier pom.xml




               72
Créer deux projets dans le
              répertoire projet-parent
mvn archetype:generate -DgroupId=com.jcertif -DartifactId=projet-simple-dao -Dversion=1.0.0 -
DinteractiveMode=false

mvn archetype:generate -DgroupId=com.jcertif -DartifactId=projet-simple-service -
Dversion=1.0.0 -DinteractiveMode=false




                                              73
projet-parent : pom.xml




           74
projet-dao : pom.xml




         75
projet-parent : mvn install
  INFO] ------------------------------------------------------------------------
  [INFO] Reactor Summary:
  [INFO]
  [INFO] projet-parent ..................................... SUCCESS [0.515s]
  [INFO] projet-simple-dao ................................. SUCCESS [3.455s]
  [INFO] projet-simple-service ............................. SUCCESS [0.564s]
  [INFO] ------------------------------------------------------------------------
  [INFO] BUILD SUCCESS
  [INFO] ------------------------------------------------------------------------
  [INFO] Total time: 4.669s
  [INFO] Finished at: Sun Aug 19 22:24:40 CEST 2012
  [INFO] Final Memory: 9M/81M
  [INFO] ------------------------------------------------------------------------




                                        76
projet-simple-dao : mvn install

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2.074s
    [INFO] Finished at: Sun Aug 19 22:26:40 CEST 2012
    [INFO] Final Memory: 4M/81M
    [INFO] ------------------------------------------------------------------------




                                          77
“Management” des dépendances
  dans projet-parent:pom.xml




             78
Plus besoin de préciser la version
        dans les modules




                79
mvn install
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] projet-parent ..................................... SUCCESS [0.409s]
[INFO] projet-simple-dao ................................. SUCCESS [1.466s]
[INFO] projet-simple-service ............................. SUCCESS [0.529s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.544s
[INFO] Finished at: Sun Aug 19 22:34:32 CEST 2012
[INFO] Final Memory: 4M/81M
[INFO] ------------------------------------------------------------------------



                                      80
“Management” des plugins dans
   projet-parent : pom.xml




              81
Utilisation d’un plugin dans le
          module projet-simple-dao

la version du plugin
n’est plus
indispensable




                        82
projet-parent : mvn install

 [INFO]
 [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple-dao >>>
 [INFO]
 [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple-dao <<<
 [INFO]
 [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple-dao ---
 Hello World!




                                   83
Maven & les IDE




       84
Générer le site de votre projet


Exécutez la commande : mvn site




                      85
Ouvrer le fichier target/index.html
       avec un navigateur




                86
Merci !


   87

Mais conteúdo relacionado

Mais procurados

Introduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesIntroduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesSOAT
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Celinio Fernandes
 
Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Celinio Fernandes
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2teejug
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & TechniquesRachid NID SAID
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéZenika
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !vincent aniort
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 

Mais procurados (20)

Introduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesIntroduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuées
 
Maven
MavenMaven
Maven
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Soiree Maven 2
Soiree Maven 2Soiree Maven 2
Soiree Maven 2
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)
 
Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Présentation1
Présentation1Présentation1
Présentation1
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Maven
MavenMaven
Maven
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery Avancé
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 
Formation gwt
Formation gwtFormation gwt
Formation gwt
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 

Destaque

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
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMBucharest Java User Group
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionCyrille Le Clerc
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Saâd Zerhouni
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1Horacio Gonzalez
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiENSET, Université Hassan II Casablanca
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 

Destaque (19)

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
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVM
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la production
 
Soutenance PFE 2012
Soutenance PFE 2012Soutenance PFE 2012
Soutenance PFE 2012
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
YaJUG - Spring 3.0
YaJUG - Spring 3.0YaJUG - Spring 3.0
YaJUG - Spring 3.0
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
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
 

Semelhante a JCertif 2012 : Maven par la pratique

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
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdfOmbotimbe Salifou
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Publicis Sapient Engineering
 
SLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfSLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfArouNa3
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012FastConnect
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natifHenri Gomez
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 

Semelhante a JCertif 2012 : Maven par la pratique (20)

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)
 
Gradle_LyonJUG
Gradle_LyonJUGGradle_LyonJUG
Gradle_LyonJUG
 
gradle_nantesjug
gradle_nantesjuggradle_nantesjug
gradle_nantesjug
 
Gradle_ToursJUG
Gradle_ToursJUGGradle_ToursJUG
Gradle_ToursJUG
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
 
Gradle_BordeauxJUG
Gradle_BordeauxJUGGradle_BordeauxJUG
Gradle_BordeauxJUG
 
SLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfSLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdf
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Gradle_ToulouseJUG
Gradle_ToulouseJUGGradle_ToulouseJUG
Gradle_ToulouseJUG
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Introduction JavaEE
Introduction JavaEEIntroduction JavaEE
Introduction JavaEE
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif
 
Gradle_NormandyJUG
Gradle_NormandyJUGGradle_NormandyJUG
Gradle_NormandyJUG
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 

Mais de Rossi Oddet

BreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exempleBreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exempleRossi Oddet
 
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !Rossi Oddet
 
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)Rossi Oddet
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
JCertif 2014 - Techniques & Outils de Productivité
JCertif 2014 - Techniques & Outils de ProductivitéJCertif 2014 - Techniques & Outils de Productivité
JCertif 2014 - Techniques & Outils de ProductivitéRossi Oddet
 
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?Rossi Oddet
 
BreizhCamp 2014 - Ionic in Action (Tools In Action)
BreizhCamp 2014 - Ionic in Action (Tools In Action)BreizhCamp 2014 - Ionic in Action (Tools In Action)
BreizhCamp 2014 - Ionic in Action (Tools In Action)Rossi Oddet
 
JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?Rossi Oddet
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsRossi Oddet
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueRossi Oddet
 
JCertif 2012 : Le lab
JCertif 2012 : Le labJCertif 2012 : Le lab
JCertif 2012 : Le labRossi Oddet
 
JCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumJCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumRossi Oddet
 

Mais de Rossi Oddet (12)

BreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exempleBreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exemple
 
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
 
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
JCertif 2014 - Techniques & Outils de Productivité
JCertif 2014 - Techniques & Outils de ProductivitéJCertif 2014 - Techniques & Outils de Productivité
JCertif 2014 - Techniques & Outils de Productivité
 
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
 
BreizhCamp 2014 - Ionic in Action (Tools In Action)
BreizhCamp 2014 - Ionic in Action (Tools In Action)BreizhCamp 2014 - Ionic in Action (Tools In Action)
BreizhCamp 2014 - Ionic in Action (Tools In Action)
 
JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratique
 
JCertif 2012 : Le lab
JCertif 2012 : Le labJCertif 2012 : Le lab
JCertif 2012 : Le lab
 
JCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumJCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec Icescrum
 

JCertif 2012 : Maven par la pratique

  • 1. Maven par la pratique
  • 2. Qui suis-je ? Rossi Oddet Consultant IT chez SQLI Manager JCertif Lab Twitter : @rossioddet Blog: http://blog.roddet.com 2
  • 4. Votre outil de gestion de projet ! 4
  • 5. Que peut-on concrètement faire avec ? 5
  • 6. Quelques services rendus à votre projet G Créez ! Compilez ! Testez ! Gérer les dépendances, la version du JDK, ... Exécutez des tests unitaires, d’intégrations, ... à l’aide de modèles Versionnez ! Assemblez ! Archivez ! JAR, WAR, EAR, ZIP, ... dans un dépôt local ou distant Gérer les versions de votre projet Qualifiez ! Reportez ! Déployez ! dans un serveur d’application local, distant, ... Vérifier la qualité de vos projets Générer/envoyer divers rapports 6
  • 7. Maven, toute une philosophie “convention plutôt que configuration” “standard plutôt qu’outil” “même modèle pour tous les projets” “mvn install pour tout le monde” 7
  • 8. Installer Maven • Rendez-vous à la page de téléchargement : http://maven.apache.org/ download.html • Décompressez dans le répertoire de votre choix le fichier apache- maven-3.0.4-bin.zip • Mettre le répertoire [MAVEN_INSTALL]/bin dans la variable Path • Exécutez la commande : mvn -version 8
  • 9. Le fichier settings.xml Unique fichier XML de configuration “convention plutôt que configuration” 9
  • 10. La carte d’identité d’un projet République de groupId : com.jcertif artifactId : projet-simple version : 1.0.0 packaging : jar 10
  • 11. L’archivage d’un projet <Répertoire archive> / <groupId> / <artifactId> / <version> / <artifactId>-<version>.<packaging> Par exemple : .m2/repository/com/jcertif/projet-simple/1.0.0/mon-projet-simple-1.0.0.jar 11
  • 12. La structure par défaut d’un projet mon-projet /pom.xml /src /main /java /resources /webapp /test /java /resources /target 12
  • 13. TP 1 : Créer un projet simple mvn archetype:generate -DgroupId=com.jcertif -DartifactId=projet-simple -Dversion=1.0.0 - DinteractiveMode=false 13
  • 14. Les fichiers générés projet-simple /pom.xml /src /main /java /com /jcertif /App.java /test /java /com /jcertif /AppTest.java 14
  • 15. Fichier pom.xml pour configurer votre projet 15
  • 17. Classe AppTest.java pom.xml 17
  • 18. Construisez votre projet • Se positionner dans le répertoire “mon-projet-simple” • Exécutez la commande : mvn install 18
  • 19. Cycle vie - mvn install 19
  • 20. Fichiers générés par mvn install projet-simple /target /projet-simple-1.0-SNAPSHOT.jar /classes /com /jcertif /App.class /maven-archiver /pom.properties /surfire-reports /com.jcertif.AppTest.txt /TEST-com.jcertif.AppTest.xml /test-classes /com /jcertif /AppTest.class 20
  • 21. Exécutez l’application java -cp target/projet-simple-1.0-SNAPSHOT.jar com.jcertif.App 21
  • 22. Modifier la classe App.java 22
  • 23. Exécutez : mvn install [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /dev/jcertif/projet-simple/src/main/java/com/jcertif/App.java:[11,8] cannot find symbol symbol : class JFrame location: class com.jcertif.App [ERROR] /dev/jcertif/projet-simple/src/main/java/com/jcertif/App.java:[11,28] cannot find symbol symbol : class JFrame location: class com.jcertif.App [INFO] 2 errors [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.072s [INFO] Finished at: Sun Aug 19 14:47:03 CEST 2012 [INFO] Final Memory: 8M/81M [INFO] ------------------------------------------------------------------------ 23
  • 24. Corriger la classe Les ressources du JDK sont accessibles sans ajout de dépendance 24
  • 25. Exécutez : mvn install [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.345s [INFO] Finished at: Sun Aug 19 15:09:01 CEST 2012 [INFO] Final Memory: 9M/81M [INFO] ------------------------------------------------------------------------ 25
  • 26. Modifier la classe AppTest.java Mise en échec du test 26
  • 27. Exécutez mvn install ------------------------------------------------------- T E ST S ------------------------------------------------------- Running com.jcertif.AppTest Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.019 sec <<< FAILURE! Results : Failed tests: testApp(com.jcertif.AppTest) Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.358s [INFO] Finished at: Sun Aug 19 15:25:19 CEST 2012 [INFO] Final Memory: 9M/81M [INFO] ------------------------------------------------------------------------ 27
  • 28. Exécutez mvn install -Dmaven.test.skip [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.787s [INFO] Finished at: Sun Aug 19 15:27:25 CEST 2012 [INFO] Final Memory: 5M/81M [INFO] ------------------------------------------------------------------------ Pas d’exécution des tests 28
  • 29. Où récupérer les dépendances ? 2 - Si pas trouvé en local, recherche via le web mvn install Dépôt distant par défaut : http://repo.maven.org/maven2/ 1 - Recherche en local Dépôt local par défaut : [user.dir]/.m2/repository 29
  • 30. Différents types de dépendance • compile (par défaut) : indispensable à la compilation • runtime : inutile à la compilation mais indispensable à l’exécution • test : utile uniquement à la compilation et l’exécution des tests • provided : indispensable à la compilation, dépendance fournie par l’environnement d’exécution. • system : dépendance à récupérer en local, hors dépôt Maven => à ne pas utiliser dans la mesure du possible 30
  • 31. Transitivité des dépendances épen d de Projet C d dépend de Projet A Projet B dép end d e Projet D => Le projet A peut utiliser les classes des projets B, C et D 31 dépend de
  • 32. TP 2 : Gérer les dépendances Objectif : - utiliser la bibliothèque commons-lang - visualiser/analyser les dépendances - exclusion de bibliothèque 32
  • 33. Modifier la classe App.java Utilisation de la classe RandomStringUtils de la bibliothèque commons-lang 33
  • 34. mvn install [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /dev/jcertif/projet-simple/src/main/java/com/jcertif/App.java:[3,25] package org.apache.commons does not exist [ERROR] /dev/jcertif/projet-simple/src/main/java/com/jcertif/App.java:[13,24] cannot find symbol symbol : variable RandomStringUtils location: class com.jcertif.App [INFO] 2 errors [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.508s [INFO] Finished at: Sun Aug 19 17:04:31 CEST 2012 [INFO] Final Memory: 8M/81M [INFO] ------------------------------------------------------------------------ 34
  • 35. Ajouter la dépendance commons-lang 35
  • 36. mvn install [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.771s [INFO] Finished at: Sun Aug 19 17:33:30 CEST 2012 [INFO] Final Memory: 9M/81M [INFO] ------------------------------------------------------------------------ 36
  • 37. Ajouter une dépendance vers Hibernate-core 37
  • 38. mvn dependency:tree [INFO] [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ projet-simple --- [INFO] com.jcertif:projet-simple:jar:1.0-SNAPSHOT [INFO] +- junit:junit:jar:3.8.1:test [INFO] +- commons-lang:commons-lang:jar:2.6:compile [INFO] - org.hibernate:hibernate-core:jar:4.1.2:compile [INFO] +- antlr:antlr:jar:2.7.7:compile [INFO] +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile [INFO] +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile [INFO] +- dom4j:dom4j:jar:1.6.1:compile [INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile [INFO] +- org.javassist:javassist:jar:3.15.0-GA:compile [INFO] - org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile 38
  • 40. mvn dependency:tree [INFO] [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ projet-simple --- [INFO] com.jcertif:projet-simple:jar:1.0-SNAPSHOT [INFO] +- junit:junit:jar:3.8.1:test [INFO] +- commons-lang:commons-lang:jar:2.6:compile [INFO] - org.hibernate:hibernate-core:jar:4.1.2:compile [INFO] +- antlr:antlr:jar:2.7.7:compile [INFO] +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile [INFO] +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile [INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile [INFO] +- org.javassist:javassist:jar:3.15.0-GA:compile [INFO] - org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile pas de dépendance vers dom4j 40
  • 41. mvn dependency:analyze [INFO] [INFO] <<< maven-dependency-plugin:2.1:analyze (default-cli) @ projet-simple <<< [INFO] [INFO] --- maven-dependency-plugin:2.1:analyze (default-cli) @ projet-simple --- [WARNING] Unused declared dependencies found: [WARNING] org.hibernate:hibernate-core:jar:4.1.2:compile 41
  • 42. TP 3 : Utiliser les plugins Maven Illustration avec le plugin exec-maven-plugin 42
  • 43. Modifier le fichier pom.xml 43
  • 44. mvn install [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- Chaine = 1840905304 [INFO] 44
  • 45. TP 4 : Utiliser les ressources Objectif : créer un fichier de propriétés et l’utiliser dans son application 45
  • 46. Créer un fichier de paramétrage projet-simple /src /main /resources /param.properties 46
  • 47. Ajouter la propriété carac.count param.properties carac.count=4 47
  • 48. Utiliser la propriété carac.count dans App.java 48
  • 49. mvn install [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- Chaine = 0166 49
  • 50. Modifier la propriété carac.count param.properties carac.count=20 50
  • 51. mvn install [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- Chaine = 92760895216065926312 51
  • 52. TP 5 : Utiliser des variables Objectif : variabiliser la construction d’un projet 52
  • 53. Compléter le fichier params.properties param.properties carac.count=4 projet.nom=${project.artifactId} projet.version=${project.version} 53
  • 54. Modifier la classe App.java 54
  • 55. mvn install INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- #################################### Nom projet : ${project.artifactId} Version projet : ${project.version} #################################### Chaine = 53577921925530242406 55
  • 56. Activer la mise à jour des variables dans les ressources 56
  • 57. mvn install [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- #################################### Nom projet : projet-simple Version projet : 1.0-SNAPSHOT #################################### Chaine = 78559487063744308397 57
  • 58. Créer la propriété carac.count dans le fichier pom.xml 58
  • 59. Utiliser la variable ${carac.count} param.properties carac.count=${carac.count} projet.nom=${project.artifactId} projet.version=${project.version} 59
  • 60. mvn install [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- #################################### Nom projet : projet-simple Version projet : 1.0-SNAPSHOT #################################### Chaine = 1778566838937 60
  • 61. TP 6 : Utiliser les profils Exécuter l’application uniquement dans un profil 61
  • 62. Supprimer l’utilisation du plugin exec-maven-plugin 62
  • 63. Créer le profil “exec-appli” 63
  • 64. mvn install => Pas d’exécution de l’application 64
  • 65. mvn install -Pexec-appli [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- #################################### Nom projet : projet-simple Version projet : 1.0-SNAPSHOT #################################### Chaine = 6180915411835 65
  • 66. Une valeur de propriété par profil 66
  • 67. mvn install -Pexec-appli [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- #################################### Nom projet : projet-simple Version projet : 1.0-SNAPSHOT #################################### Chaine = 70 67
  • 68. Activer un profil par défaut 68
  • 69. mvn install [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple --- #################################### Nom projet : projet-simple Version projet : 1.0-SNAPSHOT #################################### Chaine = 10 69
  • 70. TP 4 : Projet multimodules Objectif : créer un ensemble de projet interdépendant 70
  • 71. Créer un projet “parent” mvn archetype:generate -DgroupId=com.jcertif -DartifactId=projet-parent -Dversion=1.0.0 - DinteractiveMode=false 71
  • 72. Supprimer le répertoire /src et Modifier le fichier pom.xml 72
  • 73. Créer deux projets dans le répertoire projet-parent mvn archetype:generate -DgroupId=com.jcertif -DartifactId=projet-simple-dao -Dversion=1.0.0 - DinteractiveMode=false mvn archetype:generate -DgroupId=com.jcertif -DartifactId=projet-simple-service - Dversion=1.0.0 -DinteractiveMode=false 73
  • 76. projet-parent : mvn install INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] projet-parent ..................................... SUCCESS [0.515s] [INFO] projet-simple-dao ................................. SUCCESS [3.455s] [INFO] projet-simple-service ............................. SUCCESS [0.564s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.669s [INFO] Finished at: Sun Aug 19 22:24:40 CEST 2012 [INFO] Final Memory: 9M/81M [INFO] ------------------------------------------------------------------------ 76
  • 77. projet-simple-dao : mvn install [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.074s [INFO] Finished at: Sun Aug 19 22:26:40 CEST 2012 [INFO] Final Memory: 4M/81M [INFO] ------------------------------------------------------------------------ 77
  • 78. “Management” des dépendances dans projet-parent:pom.xml 78
  • 79. Plus besoin de préciser la version dans les modules 79
  • 80. mvn install [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] projet-parent ..................................... SUCCESS [0.409s] [INFO] projet-simple-dao ................................. SUCCESS [1.466s] [INFO] projet-simple-service ............................. SUCCESS [0.529s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.544s [INFO] Finished at: Sun Aug 19 22:34:32 CEST 2012 [INFO] Final Memory: 4M/81M [INFO] ------------------------------------------------------------------------ 80
  • 81. “Management” des plugins dans projet-parent : pom.xml 81
  • 82. Utilisation d’un plugin dans le module projet-simple-dao la version du plugin n’est plus indispensable 82
  • 83. projet-parent : mvn install [INFO] [INFO] >>> exec-maven-plugin:1.1:java (default) @ projet-simple-dao >>> [INFO] [INFO] <<< exec-maven-plugin:1.1:java (default) @ projet-simple-dao <<< [INFO] [INFO] --- exec-maven-plugin:1.1:java (default) @ projet-simple-dao --- Hello World! 83
  • 84. Maven & les IDE 84
  • 85. Générer le site de votre projet Exécutez la commande : mvn site 85
  • 86. Ouvrer le fichier target/index.html avec un navigateur 86
  • 87. Merci ! 87