SlideShare a Scribd company logo
1 of 18
Download to read offline
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?

More Related Content

What's hot

Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginnersBugRaptors
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with JenkinsJadson Santos
 
L'API Collector dans tous ses états
L'API Collector dans tous ses étatsL'API Collector dans tous ses états
L'API Collector dans tous ses étatsJosé Paumard
 
Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Amazon Web Services
 
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개OpenStack Korea Community
 
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
 
오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기영우 김
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-RegionJi-Woong Choi
 
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetesssuseraada82
 

What's hot (20)

Maven
MavenMaven
Maven
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginners
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Continuous Delivery with Jenkins
Continuous Delivery with JenkinsContinuous Delivery with Jenkins
Continuous Delivery with Jenkins
 
L'API Collector dans tous ses états
L'API Collector dans tous ses étatsL'API Collector dans tous ses états
L'API Collector dans tous ses états
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
spring-api-rest.pdf
spring-api-rest.pdfspring-api-rest.pdf
spring-api-rest.pdf
 
Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...
 
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
[OpenInfra Days Korea 2018] (Track 2) Neutron LBaaS 어디까지 왔니? - Octavia 소개
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
 
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
 
Gradle布教活動
Gradle布教活動Gradle布教活動
Gradle布教活動
 
오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기오픈스택 멀티노드 설치 후기
오픈스택 멀티노드 설치 후기
 
Maven
MavenMaven
Maven
 
Jenkins
JenkinsJenkins
Jenkins
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
 

Viewers also liked

Curso de nivelación-Grupo-2
Curso de nivelación-Grupo-2Curso de nivelación-Grupo-2
Curso de nivelación-Grupo-2Carlos Vázquez
 
Le cloud en toute confiance
Le cloud en toute confianceLe cloud en toute confiance
Le cloud en toute confianceIkoula
 
Actual presentacion prenovicios
Actual presentacion prenoviciosActual presentacion prenovicios
Actual presentacion prenoviciosChinca FMA
 
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 - Frenchjeremysandor
 
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 DiferenteIRMA CHAVEZ
 
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-LouisBâle Région Mag
 
Folles statues cb
Folles statues cbFolles statues cb
Folles statues cbthereddings
 
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...Salon e-tourisme #VeM
 
Proposta Modificació1
Proposta Modificació1Proposta Modificació1
Proposta Modificació1ucave
 
Slides Conferencedepresse Pw Cpaying Taxes2010
Slides Conferencedepresse Pw Cpaying Taxes2010Slides Conferencedepresse Pw Cpaying Taxes2010
Slides Conferencedepresse Pw Cpaying Taxes2010PwCPresseFrance
 
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 silviaNanettelp
 

Viewers also liked (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
 

Similar to Maven

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
 
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
 
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
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
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
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests PlanDenis Voituron
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueRossi Oddet
 
Industrialiation PHP plugfr
Industrialiation PHP plugfrIndustrialiation PHP plugfr
Industrialiation PHP plugfrpierredelacelle
 
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èsAgile Tour 2009 Québec
 
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logiciellejollivetc
 
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 DevopsFactoVia
 
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 DevopsAZUG FR
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
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 JavaCédric Leblond
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapresLaurent Tardif
 
[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 MicrosoftChristophe HERAL
 

Similar to 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
 

More from Xavier Carpentier

More from 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?