Your SlideShare is downloading. ×
0
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

20090615 - Ch'ti JUG - Apache Maven

2,884

Published on

Présentation de Maven et de son utilisation en entreprise dans le cadre du Ch'ti JUG, le 15 juin 2009. …

Présentation de Maven et de son utilisation en entreprise dans le cadre du Ch'ti JUG, le 15 juin 2009.
Pourquoi Maven ? Pourquoi l'adopter ? Les bonnes et mauvaise pratiques. Son avenir ...

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,884
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
190
Comments
1
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Apache Maven 2 en entreprise… Comment tuer son projet avec Maven ? Comment le réussir ? 15 Juin 2009
  • 2. Arnaud Héritier <ul><li>Committer depuis 2004 </li></ul><ul><li>Membre du PMC (Project Management Committee) depuis 2005 </li></ul><ul><li>aheritier AT apache DOT org </li></ul><ul><li>http://maven.apache.org </li></ul>
  • 3. Arnaud Héritier <ul><li>Aujourd’hui - OCTO Technology </li></ul><ul><ul><li>Cabinet d’architectes en SI </li></ul></ul><ul><ul><li>http://www.octo.com </li></ul></ul><ul><ul><li>Architecte sénior </li></ul></ul><ul><li>Dans quelques jours - eXo platform </li></ul><ul><ul><li>Editeur de logiciels </li></ul></ul><ul><ul><li>http://www.exoplatform.com </li></ul></ul><ul><ul><li>Software Factory Manager </li></ul></ul><ul><ul><ul><li>Qualité </li></ul></ul></ul><ul><ul><ul><li>Outillage </li></ul></ul></ul><ul><ul><ul><li>Productivité des développements </li></ul></ul></ul>
  • 4. Programme <ul><li>Faire le choix Maven </li></ul><ul><li>Mettre en place Maven </li></ul><ul><li>Utiliser Maven au jour le jour </li></ul><ul><li>Apprendre Maven </li></ul><ul><li>L’avenir de Maven </li></ul>
  • 5. Programme <ul><li>Faire le choix Maven </li></ul><ul><ul><li>Pourquoi Maven ? </li></ul></ul><ul><ul><li>Les intérêts pour un projet </li></ul></ul><ul><ul><li>Les intérêts pour une entreprise </li></ul></ul><ul><ul><li>LA solution ? </li></ul></ul><ul><li>Mettre en place Maven </li></ul><ul><li>Utiliser Maven au jour le jour </li></ul><ul><li>Apprendre Maven </li></ul><ul><li>L’avenir de Maven </li></ul>
  • 6. Pourquoi Maven ?
  • 7. Construction d’un war en 2002 <ul><li>Utilisation d’Eclipse limitée </li></ul><ul><ul><li>Pas de WTP (uniquement dans la version payante d’IBM), </li></ul></ul><ul><ul><li>Eclipse ne permettait pas d’exporter des Wars </li></ul></ul>
  • 8. Construction d’un war en 2002 <ul><li>Beaucoup de tâches manuelles </li></ul><ul><ul><li>Modifier les fichiers de paramétrage </li></ul></ul><ul><ul><li>Exporter les différents jar </li></ul></ul><ul><ul><li>Copier les dépendances (et nos jars), dans un répertoire lib </li></ul></ul><ul><ul><li>Faire un zip que l’on renomme en war </li></ul></ul><ul><ul><li>Tagguer l’ensemble des sources dans le répertoire de sources (CVS) </li></ul></ul><ul><ul><li>Envoyer le fichier par FTP sur le serveur d’intégration </li></ul></ul><ul><ul><li>Se connecter à la console d’administration du serveur et déployer l’application </li></ul></ul>
  • 9. Construction d’un war en 2002 <ul><li>Un seul problème, Y’a toujours des problèmes </li></ul><ul><ul><li>Erreur dans la configuration </li></ul></ul><ul><ul><li>Oubli d’une dépendance </li></ul></ul><ul><ul><li>oubli d’un fichier </li></ul></ul><ul><ul><li>Correction de dernière minute qui introduit une régression… </li></ul></ul><ul><ul><li>Autres </li></ul></ul><ul><li>Combien de temps ça prend ? </li></ul><ul><ul><li>Quand tout va bien : 15 minutes </li></ul></ul><ul><ul><li>Quand il y a des problèmes : ½ journée </li></ul></ul>
  • 10. Une première réponse : ANT <ul><li>Ecriture d’un script </li></ul><ul><ul><li>Permet d’automatiser le process </li></ul></ul><ul><ul><li>Durée du processus réduite de moitié </li></ul></ul><ul><ul><li>Le processus ne monopolise personne </li></ul></ul><ul><ul><ul><li>On le lance et on passe à autre chose </li></ul></ul></ul>
  • 11. Les limites de ANT <ul><li>Ecrire le script, c’est long </li></ul><ul><li>Modifier un script, c’est très long </li></ul><ul><li>Au final, le gains de temps n’est pas évident </li></ul><ul><ul><li>Mais c’est quand même plus amusant </li></ul></ul><ul><ul><li>Il est possible de réutiliser le script ! </li></ul></ul>
  • 12. La réutilisation de scripts ANT <ul><li>Les scripts ne sont pas directement réutilisables </li></ul><ul><ul><li>Structure de projets différents </li></ul></ul><ul><ul><li>Besoins différents </li></ul></ul><ul><li>Encore du temps perdu </li></ul><ul><ul><li>Modification du script </li></ul></ul><ul><ul><li>Réécriture pour le rendre plus générique </li></ul></ul><ul><li>Un nouveau métier s’est créé dans chaque projet : scripteur ANT </li></ul>
  • 13. Quelques exemples <ul><li>J u nit : http://junit.cvs.sourceforge.net/viewvc/junit/junit/build.xml?view=markup </li></ul><ul><li>Findbugs : http://findbugs.googlecode.com/svn/trunk/findbugs/build.xml </li></ul><ul><li>J b oss SEAM : http://anonsvn.jboss.org/repos/seam/branches/community/Seam_2_0 </li></ul>
  • 14. Les intérêts de Maven pour un projet
  • 15. Maven, le choix Projet <ul><li>Le projet peut-être librement découpé en modules </li></ul><ul><ul><li>Maven ne cristallise pas l’architecture de l’application </li></ul></ul><ul><li>Gestion des dépendances </li></ul><ul><ul><li>Déclaratif : Gestion automatique du téléchargement et de l’utilisation dans le projet. </li></ul></ul><ul><ul><li>Transitivité : On ne déclare que ce que l’on utilise </li></ul></ul>
  • 16. Maven, le choix Projet <ul><li>Centralise et automatise les différents aspects du développement de logiciels </li></ul><ul><li>Une seule chose qu’il ne peut faire à votre place  : Développer </li></ul><ul><ul><li>Construction </li></ul></ul><ul><ul><li>Tests </li></ul></ul><ul><ul><li>Packaging </li></ul></ul><ul><ul><li>Déploiement </li></ul></ul><ul><ul><li>Documentation </li></ul></ul><ul><ul><li>Contrôles et rapports sur la qualité des développements </li></ul></ul>
  • 17. Les intérêts de Maven pour une entreprise
  • 18. Maven, le choix Entreprise <ul><li>Standard du marché </li></ul><ul><ul><li>Disponibilité des ressources </li></ul></ul><ul><li>Standardisation des développements </li></ul><ul><ul><li>Organisation des sources </li></ul></ul><ul><ul><li>Descripteur de projet </li></ul></ul>
  • 19. Maven, le choix Entreprise <ul><li>Rationnaliser les coûts </li></ul><ul><ul><li>On ne réinvente pas la roue à chaque nouveau projet </li></ul></ul><ul><ul><li>Factorisation entre projets </li></ul></ul><ul><li>Promotion de la qualité et intégration de l’outillage associé </li></ul>
  • 20. LA solution ?
  • 21. Maven, LA solution ? <ul><li>NON !!! </li></ul><ul><ul><li>Maven ne répond pas à tous les besoins </li></ul></ul><ul><li>Choisissez Maven seulement si vous adhérez à son objectif : </li></ul><ul><ul><li>STANDARDISER </li></ul></ul><ul><li>En avez vous les moyens ? </li></ul><ul><ul><li>Ex: standardiser un existant coûte vite cher ! </li></ul></ul><ul><li>Ant et les autres solutions de scripting peuvent être justifiées. </li></ul>
  • 22. Programme <ul><li>Faire le choix Maven </li></ul><ul><li>Mettre en place Maven </li></ul><ul><ul><li>KISS </li></ul></ul><ul><ul><li>Sécurisation de l’environnement </li></ul></ul><ul><ul><li>Industrialisation des développements </li></ul></ul><ul><li>Utiliser Maven au jour le jour </li></ul><ul><li>Apprendre Maven </li></ul><ul><li>L’avenir de Maven </li></ul>
  • 23. KISS
  • 24. K.I.S.S. <ul><li>Keep It Simple, Stupid </li></ul><ul><li>Partez de rien </li></ul><ul><li>Ne faites pas de sur-architecture </li></ul><ul><ul><li>ça n’est pas parce que Maven vous propose d’utiliser des modules qu’il faut le faire. </li></ul></ul><ul><li>Ne testez pas toutes les fonctionnalités de Maven dans votre projet. </li></ul>
  • 25. Sécurisation de l’environnement
  • 26. Sécurisez ! <ul><li>Mettez en place un gestionnaire de proxy des repositories externes </li></ul><ul><li>Pour se prémunir </li></ul><ul><ul><li>des défaillances du réseau de l’entreprise </li></ul></ul><ul><ul><li>des défaillances des repositories externes. </li></ul></ul><ul><li>Pour faire plaisir </li></ul><ul><ul><li>à votre infra en diminuant la charge réseau. </li></ul></ul><ul><ul><li>aux développeurs en diminuant les temps de téléchargement. </li></ul></ul>
  • 27. Sécurisez ! <ul><li>Différents produits gratuits ou payants </li></ul><ul><ul><li>Sonatype Nexus (remplaçant de Proximity) </li></ul></ul><ul><ul><li>Jfrog Artifactory </li></ul></ul><ul><ul><li>Apache Archiva </li></ul></ul><ul><li>Un groupe unique qui fait proxy vers tous les repos externes </li></ul><ul><ul><li>Déclaration d’un mirroir * dans les settings de tous les développeurs </li></ul></ul>
  • 28. Settings avec un miroir global <ul><li><settings> <mirrors> <mirror> <!--This sends everything else to /public --> <id>nexus</id> <mirrorOf>external:*</mirrorOf> <url>http://localhost:8081/nexus/content/groups/public</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <!--Enable snapshots for the built in central repo to direct --> <!--all requests to nexus via the mirror --> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <!--make the profile active all the time --> <activeProfile>nexus</activeProfile> </activeProfiles> </settings> </li></ul>
  • 29. Industrialisation des développements
  • 30. Industrialisez ! <ul><li>Partagez vos livrables : </li></ul><ul><ul><li>Référentiels d’artifacts </li></ul></ul><ul><li>Partagez vos extensions Maven : </li></ul><ul><ul><li>Plugins </li></ul></ul><ul><li>Partagez le paramétrage Maven : </li></ul><ul><ul><li>POM Parent </li></ul></ul>
  • 31. Industrialisez ! <ul><li>Partagez vos versions recommandées d’artifacts : </li></ul><ul><ul><li>POM de dependencyManagement </li></ul></ul><ul><ul><li>Scope import </li></ul></ul><ul><li>Partagez vos modèles d’applications : </li></ul><ul><ul><li>Archetypes </li></ul></ul><ul><li>Automatisez votre processus de release </li></ul>
  • 32. Industrialisez ! <ul><li>Mettez en place une démarche de tests </li></ul><ul><ul><li>Tout l’outillage est pré-intégré : </li></ul></ul><ul><ul><ul><li>Junit, TestNG – tests unitaires, </li></ul></ul></ul><ul><ul><ul><li>Selenium, Canoo – tests d’IHM, </li></ul></ul></ul><ul><ul><ul><li>Fitnesse, Greenpepper – tests fonctionnels, </li></ul></ul></ul><ul><ul><ul><li>SoapUI – tests d’intégration WS </li></ul></ul></ul><ul><ul><ul><li>Et bien d’autres encore </li></ul></ul></ul>
  • 33. Industrialisez ! <ul><li>Mettez en place une démarche qualité </li></ul><ul><ul><li>Uniformisation du code (CheckStyle) </li></ul></ul><ul><ul><li>Recherche de mauvaises pratiques ou de bugs potentiels (PMD, FindBugs, Clirr) </li></ul></ul><ul><ul><li>Couverture du code par les tests (Cobertura, Clover) </li></ul></ul><ul><ul><li>Contrôles </li></ul></ul><ul><ul><ul><li>le build ne passe pas si certains critères ne sont pas atteints (Non compatibilité ascendante des APIs, …) </li></ul></ul></ul><ul><ul><li>Reporting </li></ul></ul><ul><ul><ul><li>Site web ou serveur dédié (sonar) </li></ul></ul></ul>
  • 34. Sonar
  • 35. Industrialisez ! <ul><li>Mettez en place un serveur d’intégration continue </li></ul><ul><ul><li>Environnement neutre </li></ul></ul><ul><ul><li>Réagir au plus tôt </li></ul></ul><ul><ul><ul><li>intégration, </li></ul></ul></ul><ul><ul><ul><li>tests, </li></ul></ul></ul><ul><ul><ul><li>contrôles qualité </li></ul></ul></ul><ul><ul><li>Amélioration de la productivité et de la qualité </li></ul></ul><ul><li>Différents produits gratuits ou non </li></ul><ul><ul><li>Hudson, Bamboo, TeamCity, Continuum, Cruisecontrol, … </li></ul></ul>
  • 36. Hudson
  • 37. Programme <ul><li>Faire le choix Maven </li></ul><ul><li>Mettre en place Maven </li></ul><ul><li>Utiliser Maven au jour le jour </li></ul><ul><ul><li>Structurer son projet </li></ul></ul><ul><ul><li>Structurer son POM </li></ul></ul><ul><ul><li>Pratiques de développement </li></ul></ul><ul><li>Apprendre Maven </li></ul><ul><li>L’avenir de Maven </li></ul>
  • 38. Structurer son projet
  • 39. Structurer son projet <ul><li>A ne pas faire : </li></ul><ul><ul><li>Ne pas utiliser les conventions </li></ul></ul><ul><ul><ul><li>Sauf si migration, et uniquement en période transitoire. </li></ul></ul></ul><ul><ul><li>Avoir plusieurs sous modules avec des versions différentes </li></ul></ul><ul><ul><ul><li>Ces modules sont alors de véritables projets indépendants. Pas besoin d’un build global. </li></ul></ul></ul>
  • 40. Structurer son projet <ul><li>A ne pas faire : </li></ul><ul><ul><li>Avoir un trop grand nombre de modules dans un même projet </li></ul></ul><ul><ul><ul><li>Est ce justifié par des contraintes ou besoins techniques ? </li></ul></ul></ul><ul><ul><ul><li>Cela pénalise les performances le projet. </li></ul></ul></ul><ul><ul><li>Avoir un trop grand nombre d’héritage </li></ul></ul><ul><ul><ul><li>Cela complexifie la maintenance des POMs </li></ul></ul></ul><ul><ul><ul><ul><li>A quel endroit est positionné la configuration du plugin XXX ? </li></ul></ul></ul></ul>
  • 41. Structurer son projet <ul><li>A faire : </li></ul><ul><ul><li>Utiliser l’héritage « naturel » : Le reactor sert de parent ses sous-modules. </li></ul></ul><ul><ul><ul><li>Simplifie la configuration (site, scm, …) </li></ul></ul></ul>
  • 42. Structurer son POM
  • 43. Structurer son POM <ul><li>A ne pas faire : </li></ul><ul><ul><li>Dépendances : </li></ul></ul><ul><ul><ul><li>Confondre dependencies / dependencyManagement </li></ul></ul></ul><ul><ul><li>Plugins : </li></ul></ul><ul><ul><ul><li>Confondre plugins / pluginManagement </li></ul></ul></ul><ul><ul><ul><li>Utiliser massivement le plugin AntRun </li></ul></ul></ul><ul><ul><ul><li>Ne pas définir explicitement les versions de TOUS les plugins utilisés par le projet </li></ul></ul></ul>
  • 44. Structurer son POM <ul><li>A ne pas faire : </li></ul><ul><ul><li>Profils : </li></ul></ul><ul><ul><ul><li>Se rendre dépendant de l’environnement </li></ul></ul></ul><ul><ul><ul><li>Avoir des dépendances non définies par défaut </li></ul></ul></ul><ul><ul><li>Reporting et qualité </li></ul></ul><ul><ul><ul><li>Activer sur un code existant tous les rapportspossibles avec leurs configurations par défaut </li></ul></ul></ul><ul><ul><ul><li>Faire des contrôles sur le formattage du code sans fournir la configuration associée pour l’IDE </li></ul></ul></ul><ul><ul><li>Mettre tout ce qu’il est possible de mettre dans le POM. </li></ul></ul>
  • 45. Structurer son POM <ul><li>A faire : </li></ul><ul><ul><li>Fixer les versions des dépendances dans le dependencyManagement de plus haut niveau dans l’héritage du projet </li></ul></ul><ul><ul><li>Définir les dépendances (groupId, artifactId, scope) au plus prêt de leur utilisation (dans les modules) </li></ul></ul><ul><ul><li>Utiliser les plugins dependency (apache) et versions (mojo) pour analyser et maintenir les dépendances de votre projet </li></ul></ul>
  • 46. Pratiques de développement
  • 47. Pratiques de développement <ul><li>A ne pas faire : </li></ul><ul><ul><li>Passer son temps dans la console, </li></ul></ul><ul><ul><li>S’échanger des jars par mail, </li></ul></ul><ul><ul><li>Utiliser systématiquement &quot;-Dmaven.test.skip=true » </li></ul></ul><ul><ul><li>Faire les releases à la main </li></ul></ul>
  • 48. Pratiques de développement <ul><li>A faire : </li></ul><ul><ul><li>Tenir sa version de Maven à jour </li></ul></ul><ul><ul><ul><li>On a pu noter sur la version 2.1 une réduction de plus 75% du temps de résolution des modules et dépendances d’un projet </li></ul></ul></ul><ul><ul><li>Utiliser le plugin reactor (ou Maven >= 2.1) pour ne reconstruire que ce qui est nécessaire </li></ul></ul><ul><ul><li>Adapter son utilisation de Maven à son IDE. </li></ul></ul>
  • 49. Programme <ul><li>Faire le choix Maven </li></ul><ul><li>Mettre en place Maven </li></ul><ul><li>Utiliser Maven au jour le jour </li></ul><ul><li>Apprendre Maven </li></ul><ul><ul><li>Où trouver des documentations ? </li></ul></ul><ul><ul><li>Quels ouvrages sont disponibles ? </li></ul></ul><ul><ul><li>Où trouver du support ? </li></ul></ul><ul><li>L’avenir de Maven </li></ul>
  • 50. Où trouver des documentations ?
  • 51. Documentations <ul><li>Le site web : </li></ul><ul><ul><li>http://maven.apache.org </li></ul></ul><ul><li>Le wiki projet : </li></ul><ul><ul><li>http://docs.codehaus.org/display/MAVEN </li></ul></ul><ul><li>Le wiki utilisateurs : </li></ul><ul><ul><li>http://docs.codehaus.org/display/MAVENUSER </li></ul></ul>
  • 52. Quels ouvrages sont disponibles ?
  • 53. Ouvrages <ul><li>Sonatype / O’Reilly : </li></ul><ul><ul><li>The Definitive Guide </li></ul></ul><ul><ul><li>http://www.sonatype.com/books </li></ul></ul><ul><ul><li>Gratuit en version électronique </li></ul></ul><ul><ul><li>D’ici la fin de l’année (?) en français </li></ul></ul>
  • 54. Ouvrages <ul><li>Exist Global </li></ul><ul><ul><li>Better builds with Maven </li></ul></ul><ul><ul><li>http://www.maestrodev.com/better-build-maven </li></ul></ul><ul><ul><li>Gratuit </li></ul></ul><ul><ul><li>Version électronique uniquement </li></ul></ul>
  • 55. Ouvrages <ul><li>Nicolas De Loof – Arnaud Héritier / Pearson </li></ul><ul><ul><li>Un ouvrage original axé sur la pratique </li></ul></ul><ul><ul><li>En français </li></ul></ul><ul><ul><li>D’ici la fin de l’année </li></ul></ul>
  • 56. Ouvrages <ul><li>OCTO Technology </li></ul><ul><ul><li>Java Productivity Primer </li></ul></ul><ul><ul><li>12 pratiques autour de Maven et des usines de développement pour améliorer le productivité en Java </li></ul></ul><ul><ul><li>http://www.octo.com </li></ul></ul><ul><ul><li>Gratuit </li></ul></ul><ul><ul><li>En français cet été (enfin !!) </li></ul></ul>
  • 57. Où trouver du support ?
  • 58. Support <ul><li>Listes de diffusion </li></ul><ul><ul><li>http://maven.apache.org/mail-lists.html </li></ul></ul><ul><li>IRC </li></ul><ul><ul><li>irc.codehaus.org - #maven </li></ul></ul><ul><li>Developpez.net </li></ul><ul><ul><li>http://www.developpez.net/ forum maven </li></ul></ul><ul><ul><li>En français </li></ul></ul><ul><li>Contrats de support </li></ul><ul><ul><li>Sonatype et quelques autres entreprises </li></ul></ul>
  • 59. Programme <ul><li>Faire le choix Maven </li></ul><ul><li>Mettre en place Maven </li></ul><ul><li>Utiliser Maven au jour le jour </li></ul><ul><li>Apprendre Maven </li></ul><ul><li>L’avenir de Maven </li></ul><ul><ul><li>Le produit </li></ul></ul><ul><ul><li>La concurrence </li></ul></ul><ul><ul><li>La communauté </li></ul></ul>
  • 60. Le produit
  • 61. Apache Maven 2.0.x <ul><li>Maintenance corrective </li></ul><ul><li>Dernière version publiée : 2.0.10 </li></ul><ul><li>Pas certain qu’une version 2.0.11 voit le jour. </li></ul>
  • 62. Apache Maven 2.x <ul><li>Maintenance évolutive </li></ul><ul><li>Corrections qui imposent un refactoring conséquent </li></ul><ul><li>Dernière version publiée : 2.1.0 </li></ul><ul><li>La version 2.2.0 sera bientôt disponible </li></ul><ul><li>2.2.0-RC3 déjà disponible </li></ul><ul><ul><li>Correction du problème de résolution des propriétés et de transformation du POM apparus en 2.1.0 </li></ul></ul><ul><ul><li>Java 5 en pré-requis pour exécuter Maven </li></ul></ul>
  • 63. Apache Maven 3.x <ul><li>N’AYEZ PAS PEUR, NE FUYEZ PAS !!! </li></ul><ul><li>Notre objectif : Compatibilité avec Maven 2.x assurée </li></ul><ul><ul><li>Pour les projets </li></ul></ul><ul><ul><li>Pour les plugins </li></ul></ul>
  • 64. Apache Maven 3.x <ul><li>Pourquoi une 3.x ? </li></ul><ul><ul><li>Parce que refonte importante du code </li></ul></ul><ul><li>Réduction / Désendettement du code </li></ul><ul><li>Refonte de l’API d’utilisation (embedder) pour une meilleure intégration aux IDEs </li></ul>
  • 65. Apache Maven 3.x <ul><li>Refonte de la gestion des artifacts (Mercury) </li></ul><ul><ul><li>Amélioration de l’algorithme de résolution des dépendances (SAT), </li></ul></ul><ul><ul><li>Abstraction des référentiels, </li></ul></ul><ul><ul><li>Gestion des versions configurable (Maven vs OSGI vs …), </li></ul></ul><ul><ul><li>Réécriture de la couche de transport http/webdav par l’équipe de Jetty. </li></ul></ul><ul><li>Cycle de vie prédictible et interrogeable, </li></ul>
  • 66. Apache Maven 3.x <ul><li>Abstraction du descripteur de projet </li></ul><ul><ul><li>Gestion de plusieurs versions du POM </li></ul></ul><ul><ul><li>Gestion de plusieurs formats du POM </li></ul></ul><ul><ul><li>Comment gérer la compatibilité avec les anciennes versions de Maven ? </li></ul></ul><ul><li>Remplacement de plexus par une implémentation « standard « (JSR 299 ou JSR 330) : </li></ul><ul><ul><li>Guice ? </li></ul></ul><ul><ul><li>XBR ? </li></ul></ul><ul><li>... </li></ul>
  • 67. La concurrence
  • 68. Les concurrents <ul><li>Ant + Ivy, Easy Ant, Gant, Graddle, … </li></ul><ul><li>Offrent la souplesse d’un outillage scriptable </li></ul><ul><li>Cherchent à apporter un niveau de service proche de Maven (gestion de dépendances, ..) mais avec une standardisation moins contraignante. </li></ul><ul><li>Cette souplesse ne leur sera t’elle pas fatale comme pour Maven 1 ? </li></ul>
  • 69. La communauté
  • 70. La communauté des utilisateurs <ul><li>1780 inscrits sur la liste de diffusion des utilisateurs </li></ul><ul><li>Statistiques sur 90 jours </li></ul><ul><li>En bleu le nombre d’inscrits </li></ul><ul><li>En rouge le nombre de messages par jours </li></ul>
  • 71. Le site web
  • 72. Les téléchargements <ul><li>Nombre de téléchargements par mois depuis un an </li></ul>
  • 73. L’équipe projet <ul><li>Plus de 60 committeurs enregistrés, </li></ul><ul><li>Plus de 20 actifs depuis le début de l’année, </li></ul><ul><li>Des entreprises comme Sonatype fournissent des ressources pour le projet et du support professionnel pour les utilisateurs, </li></ul><ul><li>Une communauté de développeurs moins isolée : rapprochements avec Eclipse, Jetty, … </li></ul>
  • 74. Conclusion <ul><li>Aujourd’hui très largement adopté par les entreprises, </li></ul><ul><li>Un produit avec une grande valeur ajoutée, </li></ul><ul><li>Une communauté d’utilisateurs et de développeurs active, </li></ul><ul><li>Du support professionnel, </li></ul><ul><li>Une produit loin d’être « parfait », </li></ul><ul><li>Encore beaucoup de choses à faire, </li></ul><ul><li>Mais un véritable challenge à relever </li></ul><ul><ul><li>Venez nous aider à le réaliser !! </li></ul></ul>
  • 75. Questions ?
  • 76. Licence <ul><li>Les photos et logos appartiennent à leurs auteurs respectifs </li></ul><ul><li>Le contenu de la présentation est sous licence Creative Commons 2.0 France </li></ul><ul><ul><li>Contrat Paternité </li></ul></ul><ul><ul><li>Pas d'Utilisation Commerciale </li></ul></ul><ul><ul><li>Partage des Conditions Initiales à l'Identique </li></ul></ul><ul><li>http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ </li></ul>
  • 77. Buffet <ul><li>Merci pour votre attention </li></ul><ul><li>Merci à Sopra Group pour son sponsoring </li></ul>

×