SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Outil de construction
Convention vs Configuration
Introduction
• maven ... c’est quoi ?
• Pourquoi maven ?
• maven... pour quoi faire ?
• maven... comment faire ?
C’est quoi maven ?
C’est quoi maven ?
• Outil de build
• Né de l’expérience des outils comme
Makefile, Ant, etc.
• En reprend les fonctionnalités
principales (gestion des
dépendances, script de
construction)
• Ajout de fonctions : test automatique,
génération de rapport
• Plugable
Pourquoi maven ?
Pourquoi maven ?
• Éviter les constructions manuelles 
• Standardiser le modèle de projet
• Standardiser la chaîne de construction 
• Automatiser le maximum
• Gérer les dépendances
• Faire plus que de la construction :
• Exécution des tests unitaires
• Génération de documentation
• Génération de rapports de tests, de couverture
code, d'analyses statique (checkstyle, PMD,
CPD, ...)
Pourquoi maven ?
• Gestion des dépendances entre projets
(dependency graph de m2eclipse)
Comment faire ?
Comment faire ?
• Convention != normes, obligations,
contraintes...
• Si tu veux configurer tu es libre mais
débrouille toi...
• KISS : Keep It Simple, Stupid 
• Partir de rien, quand c'est possible
• Industrialiser au maximum
• Bien définir les dépendances, être
minimaliste
Comment faire ?
• pom.xml
• POM : Project Object Model
• Situé à la racine du projet
• Phase principales dans le cycle de vie de
Maven 
• compile
• test
• package
• install
• deploy
Comment faire ?
• pom.xml
• POM : Project Object Model
• Situé à la racine du projet
• Phase principales dans le cycle de vie de
Maven 
• compile
• test
• package
• install
• deploy
Comment faire ?
• Convention des répertoires
• /src : les sources du projet
• /src/main : code source et fichiers source
principaux
• /src/main/java : code source
• /src/main/resources : fichiers de ressource
• /src/test : fichiers de test
• /src/test/java : code source de test
• /src/test/resources : fichiers de ressources de test
• /src/site : informations sur le projet pour les rapports
• /src/main/webapp : webapp du projet
• /target : fichiers résultat, les binaires (du code et des
tests), les packages générés et les résultats des tests
Comment faire ?
• Configuration local
• $home
• .m2
• settings.xml
• repository
• libs
Comment faire ?
• Les commandes maven de base
• mvn install : compile le projet,
exécute les tests, met a disposition le
repository local
• mvn clean install : supprime le fichier
target et re-install
• mvn test : exécute les tests unitaire
du projet
• mvn eclipse:eclipse :génère
les .classpath et .project
• mvn site : génère le site du projet,
information général, rapport de test,
de qualité, ...(conf. pom.xml requise)
Comment faire ?
• Comment faire planter son projet maven ?
• En n’utilisant pas les conventions de Maven 2 (target,
héritage, répertoires src…)
• En ayant trop de sous modules avec des versions différentes
(naissance de nouveaux projets involontairement)
• En ayant trop de modules dans le même projet : pénalise la
performance
• En confondant dependencies et dependencyManagement
• En confondant plugins et pluginManagement
• En utilisant massivement antrun : empêche la réutilisation
• En utilisant à outrance les profils : rend dépendant de
l’environnement
• En utilisant trop le reporting de qualité sur des projets déjà
existant
• En mettant tout et n’importe quoi dans le POM
• En faisant des releases à la main
Comment faire ?
• Comment réussir son projet maven ?
• Utiliser l’héritage « naturel »
• Bien définir les dépendances, être
minimaliste !
• Fixer les dépendances dans le
dependencyManagement
• On peut utiliser aussi le plugin
reactor pour ne compiler que ce qui
as été modifié
L’intégration continue
• But : prévenir les bogues, améliore le cycle de
développement en réduisant les corrections en phase
de robustesse
• Intégration, test, contrôle de qualité
• Lancement de la construction à chaque commit possible
ou paramétré avec un délai
• Les logiciels :
• Hudson : coder à la base pour le projet Glassfish,
très en vogue et très intuitif, facile à mettre en
œuvre. Pour le tester en local : java –jar hudson.war
(déployer sur http://localhost:8080/)
• Bamboo : payant
• Teamcity de Jetbrain, « build incassable »
• Continuum : Apache, vieux produit pas très
conviviale mais bien intégrer avec maven
• CruiseControl : vieux produit !
Joel test...
Utilisez-vous un gestionnaire de source ?!
Vos binaires sont-il assemblé en une fois ?!
Vos binaires sont-il produits quotidiennement ?!
Avez-vous un gestionnaire d’anomalie ?!
Le code est-il corrigé avant d’être étendu ?!
Avez-vous un planning à jour ?!
Avez-vous des spécifications ?!
Vos développeurs sont-il dans un lieu calme ?!
Avez-vous les meilleurs outils pour votre budget ?!
Avez-vous des testeur ?!
Les recrues écrivent-elles du codes ?!
Faites-vous des tests utilisateurs complet?

Weitere ähnliche Inhalte

Was ist angesagt?

An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
Vadym Lotar
 

Was ist angesagt? (20)

Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Maven Basics - Explained
Maven Basics - ExplainedMaven Basics - Explained
Maven Basics - Explained
 
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?
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Complete Java Course
Complete Java CourseComplete Java Course
Complete Java Course
 
Introduction àJava
Introduction àJavaIntroduction àJava
Introduction àJava
 
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
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Formation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataFormation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-data
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 

Andere mochten auch

Formation interprétes, ccps
Formation interprétes, ccps Formation interprétes, ccps
Formation interprétes, ccps
MIERICKE
 
Prepara Una Navidad Diferente
Prepara Una Navidad DiferentePrepara Una Navidad Diferente
Prepara Una Navidad Diferente
IRMA CHAVEZ
 
Folles statues cb
Folles statues cbFolles statues cb
Folles statues cb
thereddings
 
Proposta Modificació1
Proposta Modificació1Proposta Modificació1
Proposta Modificació1
ucave
 
Slides Conferencedepresse Pw Cpaying Taxes2010
Slides Conferencedepresse Pw Cpaying Taxes2010Slides Conferencedepresse Pw Cpaying Taxes2010
Slides Conferencedepresse Pw Cpaying Taxes2010
PwCPresseFrance
 
Les verbes au présent de l'indicatif par silvia
Les verbes au présent de l'indicatif par silviaLes verbes au présent de l'indicatif par silvia
Les verbes au présent de l'indicatif par silvia
Nanettelp
 

Andere mochten auch (20)

Curso de nivelación-Grupo-2
Curso de nivelación-Grupo-2Curso de nivelación-Grupo-2
Curso de nivelación-Grupo-2
 
Le cloud en toute confiance
Le cloud en toute confianceLe cloud en toute confiance
Le cloud en toute confiance
 
Actual presentacion prenovicios
Actual presentacion prenoviciosActual presentacion prenovicios
Actual presentacion prenovicios
 
Ds802
Ds802Ds802
Ds802
 
2010 Ontario Municipal Election Resource for Student Vote - French
2010 Ontario Municipal Election Resource for Student Vote - French2010 Ontario Municipal Election Resource for Student Vote - French
2010 Ontario Municipal Election Resource for Student Vote - French
 
Formation interprétes, ccps
Formation interprétes, ccps Formation interprétes, ccps
Formation interprétes, ccps
 
Boqueria 09
Boqueria 09Boqueria 09
Boqueria 09
 
Prepara Una Navidad Diferente
Prepara Una Navidad DiferentePrepara Una Navidad Diferente
Prepara Una Navidad Diferente
 
Dossier de presse février 2014 Théâtre La Coupole Saint-Louis
Dossier de presse février 2014 Théâtre La Coupole Saint-LouisDossier de presse février 2014 Théâtre La Coupole Saint-Louis
Dossier de presse février 2014 Théâtre La Coupole Saint-Louis
 
Estimer et Planifier
Estimer et PlanifierEstimer et Planifier
Estimer et Planifier
 
Consultas
ConsultasConsultas
Consultas
 
Folles statues cb
Folles statues cbFolles statues cb
Folles statues cb
 
Atelier M5 - 10 commandements - Responsable commercial - Salon e-tourisme Voy...
Atelier M5 - 10 commandements - Responsable commercial - Salon e-tourisme Voy...Atelier M5 - 10 commandements - Responsable commercial - Salon e-tourisme Voy...
Atelier M5 - 10 commandements - Responsable commercial - Salon e-tourisme Voy...
 
Etappenstall dp-mai-2014
Etappenstall dp-mai-2014Etappenstall dp-mai-2014
Etappenstall dp-mai-2014
 
Les cellules
Les cellulesLes cellules
Les cellules
 
Proposta Modificació1
Proposta Modificació1Proposta Modificació1
Proposta Modificació1
 
FR - Paramétrage - Gestion des articles
FR - Paramétrage - Gestion des articlesFR - Paramétrage - Gestion des articles
FR - Paramétrage - Gestion des articles
 
Slides Conferencedepresse Pw Cpaying Taxes2010
Slides Conferencedepresse Pw Cpaying Taxes2010Slides Conferencedepresse Pw Cpaying Taxes2010
Slides Conferencedepresse Pw Cpaying Taxes2010
 
Les verbes au présent de l'indicatif par silvia
Les verbes au présent de l'indicatif par silviaLes verbes au présent de l'indicatif par silvia
Les verbes au présent de l'indicatif par silvia
 
Web con Concepto
Web con ConceptoWeb con Concepto
Web con Concepto
 

Ähnlich wie Maven

Industrialiation PHP plugfr
Industrialiation PHP plugfrIndustrialiation PHP plugfr
Industrialiation PHP plugfr
pierredelacelle
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
Christophe HERAL
 

Ähnlich wie Maven (20)

20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
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
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Présentation1
Présentation1Présentation1
Présentation1
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
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
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests Plan
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratique
 
Industrialiation PHP plugfr
Industrialiation PHP plugfrIndustrialiation PHP plugfr
Industrialiation PHP plugfr
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logicielle
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 

Mehr von Xavier Carpentier (6)

#Restful really ? ElsassJUG 17 juin 2014
#Restful really ? ElsassJUG 17 juin 2014#Restful really ? ElsassJUG 17 juin 2014
#Restful really ? ElsassJUG 17 juin 2014
 
Restful, really ? MixIt 2014
Restful, really ? MixIt 2014Restful, really ? MixIt 2014
Restful, really ? MixIt 2014
 
Hibernate
HibernateHibernate
Hibernate
 
Injection de dependance en Java
Injection de dependance en JavaInjection de dependance en Java
Injection de dependance en Java
 
Java Efficace
Java EfficaceJava Efficace
Java Efficace
 
Egoless
EgolessEgoless
Egoless
 

Maven

  • 2. Introduction • maven ... c’est quoi ? • Pourquoi maven ? • maven... pour quoi faire ? • maven... comment faire ?
  • 4. C’est quoi maven ? • Outil de build • Né de l’expérience des outils comme Makefile, Ant, etc. • En reprend les fonctionnalités principales (gestion des dépendances, script de construction) • Ajout de fonctions : test automatique, génération de rapport • Plugable
  • 6. Pourquoi maven ? • Éviter les constructions manuelles  • Standardiser le modèle de projet • Standardiser la chaîne de construction  • Automatiser le maximum • Gérer les dépendances • Faire plus que de la construction : • Exécution des tests unitaires • Génération de documentation • Génération de rapports de tests, de couverture code, d'analyses statique (checkstyle, PMD, CPD, ...)
  • 7. Pourquoi maven ? • Gestion des dépendances entre projets (dependency graph de m2eclipse)
  • 9. Comment faire ? • Convention != normes, obligations, contraintes... • Si tu veux configurer tu es libre mais débrouille toi... • KISS : Keep It Simple, Stupid  • Partir de rien, quand c'est possible • Industrialiser au maximum • Bien définir les dépendances, être minimaliste
  • 10. Comment faire ? • pom.xml • POM : Project Object Model • Situé à la racine du projet • Phase principales dans le cycle de vie de Maven  • compile • test • package • install • deploy
  • 11. Comment faire ? • pom.xml • POM : Project Object Model • Situé à la racine du projet • Phase principales dans le cycle de vie de Maven  • compile • test • package • install • deploy
  • 12. Comment faire ? • Convention des répertoires • /src : les sources du projet • /src/main : code source et fichiers source principaux • /src/main/java : code source • /src/main/resources : fichiers de ressource • /src/test : fichiers de test • /src/test/java : code source de test • /src/test/resources : fichiers de ressources de test • /src/site : informations sur le projet pour les rapports • /src/main/webapp : webapp du projet • /target : fichiers résultat, les binaires (du code et des tests), les packages générés et les résultats des tests
  • 13. Comment faire ? • Configuration local • $home • .m2 • settings.xml • repository • libs
  • 14. Comment faire ? • Les commandes maven de base • mvn install : compile le projet, exécute les tests, met a disposition le repository local • mvn clean install : supprime le fichier target et re-install • mvn test : exécute les tests unitaire du projet • mvn eclipse:eclipse :génère les .classpath et .project • mvn site : génère le site du projet, information général, rapport de test, de qualité, ...(conf. pom.xml requise)
  • 15. Comment faire ? • Comment faire planter son projet maven ? • En n’utilisant pas les conventions de Maven 2 (target, héritage, répertoires src…) • En ayant trop de sous modules avec des versions différentes (naissance de nouveaux projets involontairement) • En ayant trop de modules dans le même projet : pénalise la performance • En confondant dependencies et dependencyManagement • En confondant plugins et pluginManagement • En utilisant massivement antrun : empêche la réutilisation • En utilisant à outrance les profils : rend dépendant de l’environnement • En utilisant trop le reporting de qualité sur des projets déjà existant • En mettant tout et n’importe quoi dans le POM • En faisant des releases à la main
  • 16. Comment faire ? • Comment réussir son projet maven ? • Utiliser l’héritage « naturel » • Bien définir les dépendances, être minimaliste ! • Fixer les dépendances dans le dependencyManagement • On peut utiliser aussi le plugin reactor pour ne compiler que ce qui as été modifié
  • 17. L’intégration continue • But : prévenir les bogues, améliore le cycle de développement en réduisant les corrections en phase de robustesse • Intégration, test, contrôle de qualité • Lancement de la construction à chaque commit possible ou paramétré avec un délai • Les logiciels : • Hudson : coder à la base pour le projet Glassfish, très en vogue et très intuitif, facile à mettre en œuvre. Pour le tester en local : java –jar hudson.war (déployer sur http://localhost:8080/) • Bamboo : payant • Teamcity de Jetbrain, « build incassable » • Continuum : Apache, vieux produit pas très conviviale mais bien intégrer avec maven • CruiseControl : vieux produit !
  • 18. Joel test... Utilisez-vous un gestionnaire de source ?! Vos binaires sont-il assemblé en une fois ?! Vos binaires sont-il produits quotidiennement ?! Avez-vous un gestionnaire d’anomalie ?! Le code est-il corrigé avant d’être étendu ?! Avez-vous un planning à jour ?! Avez-vous des spécifications ?! Vos développeurs sont-il dans un lieu calme ?! Avez-vous les meilleurs outils pour votre budget ?! Avez-vous des testeur ?! Les recrues écrivent-elles du codes ?! Faites-vous des tests utilisateurs complet?