Outil de construction de projet adoré par certain, décrié par d'autres, que peut apporter Maven à vos projets ? Dans cette présentation pratique et sans angélisme, les points forts et les faiblesses de Maven ont été abordés. En marge de la présentation, Nicolas a présenté quelques bonnes pratiques à mettre en place sur les projets.
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 ...
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 ...
Quand java prend de la vitesse, apache maven vous garde sur les railsArnaud Héritier
Le rythme d’évolution (et donc de support) de Java s’accélère ces dernières années (et nous n’allons pas nous plaindre). Désormais une nouvelle version de Java est dépréciée tous les deux ans!
* Java 5 : Octobre 2009
* Java 6 : Février 2013
* Java 7 : Avril 2015 (QUOI ? DEJA ? MAINTENANT ?)
* Java 8 : Mars 2017 (incompatibilité source vs binaire, vous allez découvrir...)
Mais vous, ou plutôt vos applications, comment gérez vous leurs transitions d’une version de Java à une autre ?
Découvrez dans cette session comment Apache Maven, et son outillage (toolchain, animal-sniffer, …) vous aident à jongler entre différentes versions de Java sans douleur pour vos projets.
Liferay france symposium 2012 - montée de version d’une instance liferaySébastien Le Marchand
Les montées de version du produit sont des étapes critiques dans la vie d'une application basée sur Liferay. Le portail Liferay fournit nativement des mécanismes efficaces pour mettre à jour sans difficultés la structure et les données de la base de données Liferay standard, mais une attention importante doit être portée à la migration des données et développements spécifiques, tout particulièrement pour les plugins de type « hook » et les plugins de type « ext ». Pendant cette session, les auditeurs ont bénéficié de retours d'expérience terrain et ont prise connaissance de patterns et d'astuces utiles pour assurer une montée de version en évitant les régressions et en maîtrisant la charge engagée.
Au sein d’une démarche DevOps, le build et le déploiement continue sont les premiers piliers à mettre en place.
Cette session avancé de notre NighClazz “Build Tools & Continuous Delivery” a pour objectif de présenter les modes de déploiement "Blue-Green Deployment" et "Feature toggle" ainsi que les principes d'automatisation des schémas de base de données.
GWT Principes & Techniques
Des IHM avec GWT
Des IHM avec GWT +
Communiquer avec le serveur
Internationalisation I18n
Développer un composant graphique
Historique du navigateur
Logging
Tester avec JUNIT
Divers principes avancées
JavaScript overlay types
Intégrer une appli GWT dans JavaScript
Code Splitting
Étendre la JRE Émulation
Sérialisation spécifique
Compile Reports
Au sein d’une démarche DevOps, le build et le déploiement continue sont les premiers piliers à mettre en place.
Cette session découverte de notre NighClazz “Build Tools & Continuous Delivery” a pour objectif de présenter les enjeux de l’automatisation, d’introduire les principaux outils de builds Java, de comprendre le mécanisme de livraison logicielle et de déploiement continue.
Présentation au Docker Meetup de Nantes le 27 juin 2017
Dans une démarche DevOps, La Poste a choisi de mettre en place l'orchestrateur de conteneur Openshift, basé sur Kubernetes. Nous détaillerons les changements opérés (techniques et humains) pour une mise en place et une adoption réussie d'un Paas. Du POC à la MEP, quelles sont les étapes ?
Conférence donnée au Docker Meetup Nantes, juin 2017
Formation Gratuite Total Tests par les experts Java Ippon Ippon
Garantissez la qualité des vos applications par des tests efficaces : unitaire, d'intégration, de performance... Apprenez à mettre en oeuvre un harnais de tests complet et efficace avec Junit, AssertJ, Mockito, Spring Test, Arquillian, ... et assimilez les concepts du TDD et du BDD, illustré avec Cucumber. La formation Total Test Training ira encore plus loin en vous présentant l'utilisation de Sonar et le rôle des tests dans un système d'intégration continue. Enfin, les aspects liés à la mesure de la performance (instrumentation avec Metric et stress test avec JMeter et Gatling) et à l'optimisation ciblée vous permettront d'être en mesure de produire un code "propre", protégé des risques de regressions.
Quand java prend de la vitesse, apache maven vous garde sur les railsArnaud Héritier
Le rythme d’évolution (et donc de support) de Java s’accélère ces dernières années (et nous n’allons pas nous plaindre). Désormais une nouvelle version de Java est dépréciée tous les deux ans!
* Java 5 : Octobre 2009
* Java 6 : Février 2013
* Java 7 : Avril 2015 (QUOI ? DEJA ? MAINTENANT ?)
* Java 8 : Mars 2017 (incompatibilité source vs binaire, vous allez découvrir...)
Mais vous, ou plutôt vos applications, comment gérez vous leurs transitions d’une version de Java à une autre ?
Découvrez dans cette session comment Apache Maven, et son outillage (toolchain, animal-sniffer, …) vous aident à jongler entre différentes versions de Java sans douleur pour vos projets.
Liferay france symposium 2012 - montée de version d’une instance liferaySébastien Le Marchand
Les montées de version du produit sont des étapes critiques dans la vie d'une application basée sur Liferay. Le portail Liferay fournit nativement des mécanismes efficaces pour mettre à jour sans difficultés la structure et les données de la base de données Liferay standard, mais une attention importante doit être portée à la migration des données et développements spécifiques, tout particulièrement pour les plugins de type « hook » et les plugins de type « ext ». Pendant cette session, les auditeurs ont bénéficié de retours d'expérience terrain et ont prise connaissance de patterns et d'astuces utiles pour assurer une montée de version en évitant les régressions et en maîtrisant la charge engagée.
Au sein d’une démarche DevOps, le build et le déploiement continue sont les premiers piliers à mettre en place.
Cette session avancé de notre NighClazz “Build Tools & Continuous Delivery” a pour objectif de présenter les modes de déploiement "Blue-Green Deployment" et "Feature toggle" ainsi que les principes d'automatisation des schémas de base de données.
GWT Principes & Techniques
Des IHM avec GWT
Des IHM avec GWT +
Communiquer avec le serveur
Internationalisation I18n
Développer un composant graphique
Historique du navigateur
Logging
Tester avec JUNIT
Divers principes avancées
JavaScript overlay types
Intégrer une appli GWT dans JavaScript
Code Splitting
Étendre la JRE Émulation
Sérialisation spécifique
Compile Reports
Au sein d’une démarche DevOps, le build et le déploiement continue sont les premiers piliers à mettre en place.
Cette session découverte de notre NighClazz “Build Tools & Continuous Delivery” a pour objectif de présenter les enjeux de l’automatisation, d’introduire les principaux outils de builds Java, de comprendre le mécanisme de livraison logicielle et de déploiement continue.
Présentation au Docker Meetup de Nantes le 27 juin 2017
Dans une démarche DevOps, La Poste a choisi de mettre en place l'orchestrateur de conteneur Openshift, basé sur Kubernetes. Nous détaillerons les changements opérés (techniques et humains) pour une mise en place et une adoption réussie d'un Paas. Du POC à la MEP, quelles sont les étapes ?
Conférence donnée au Docker Meetup Nantes, juin 2017
Formation Gratuite Total Tests par les experts Java Ippon Ippon
Garantissez la qualité des vos applications par des tests efficaces : unitaire, d'intégration, de performance... Apprenez à mettre en oeuvre un harnais de tests complet et efficace avec Junit, AssertJ, Mockito, Spring Test, Arquillian, ... et assimilez les concepts du TDD et du BDD, illustré avec Cucumber. La formation Total Test Training ira encore plus loin en vous présentant l'utilisation de Sonar et le rôle des tests dans un système d'intégration continue. Enfin, les aspects liés à la mesure de la performance (instrumentation avec Metric et stress test avec JMeter et Gatling) et à l'optimisation ciblée vous permettront d'être en mesure de produire un code "propre", protégé des risques de regressions.
Et si on simplifiait l’auto-partage ? Et si on sauvait des vies ? Et si on demandait la Lune ? Vous avez une idée géniale, mais comment la concrétiser ?
Au travers de nos différents retours d’expérience, nous vous donnerons les clés pour arriver à développer votre Minimum Viable Product.
Mobile product - "Build great apps!" at ProductTank Paris #17Alexandre Jubien
Alex Jubien is a pioneer in mobile development who has worked as the head of mobile at Deezer and Viadeo. He is now an independent mobile consultant who advises startups on mobile strategy. His presentation outlines seven key lessons for building great mobile apps: 1) anchor apps in the real world, 2) prioritize usability with consistent workflows, 3) design for interruptions and micro-moments, 4) optimize for speed with offline capabilities, 5) reduce friction through onboarding and feedback, 6) leverage context awareness, and 7) provide "superpowers" to users through sensors and connectivity.
A startup is an organization designed to rapidly develop and test new ideas and products. It typically involves a team addressing a problem through the creation of a product or service, with the goal of exponential growth. However, startups face huge challenges and high chances of failure before finding product-market fit. The founders often have a problem from their own lives they want to solve. They then build a solution step-by-step while relying heavily on their team. Incubators and accelerators can provide mentoring, networking and funding resources to support startup teams.
AARRR !
Quelques principes sur le growth hacking des apps et plein plein de techniques à mettre en oeuvre pour maximiser le succès de vos applications mobiles.
Indexer vos applications dans Google : 2015 est l’année de l’App Indexing
Les applications mobiles sont de plus en plus le canal privilégié pour l’accès à l’information. Si indexer le contenu d’un site est devenu une évidence, qu’en est-il du contenu des applications ? Doit-on s’en tenir à la simple page de présentation de l’application sur les app stores ? Decrouvrez les différentes manières d’exposer le contenu de vos applications auprès des moteurs de recherche, pour en favoriser la découverte et la rétention ! Eclairages sur les enjeux stratégiques, sur les différentes approches (landing pages d’app et SEO, deep linking, app indexing…) et sur leur mise en œuvre.
Une transformation tout (ou presque) sauf digitaleChris Woodrow
Découvrez les enjeux de la transformation digitale dans une entreprise disposant d’un patrimoine informatique. Au delà des aspects purement techniques, les clés du succès se situent au niveau de la culture d’entreprise en général.
SERLI is a French software engineering company that contributes 10% of its workforce to open source software (OSS) projects. Involvement in OSS has provided several benefits including increased visibility, credibility with customers, and skills growth for employees. This has led to a virtuous cycle where OSS contribution improves the business and quality of work, which enables additional contribution.
Introduction to Growth Hacking:
- Principles
- Examples (from US and from #FrenchTech)
- Theory
- AARRR / Metrics
- Tools
- Must read stuff
And plenty other things!
Se support présente l'outil d'intégration Maven dans le processus d'industrialisation du génie logiciel. Tout ce qu'il faut savoir sur maven.
La deuxième partie de ce cours traite la mise en oeuvre de maven dans des projets basés sur JPA, Hibernate, Spring et Struts.
Bon apprentissage à tous
Migrer de Jenkins vers Azure DevOps les Builds JavaCédric Leblond
Je migre de nombreuses builds Java, jgitflow d'une plateforme Jenkins et Nexus hébergée sur AWS vers Azure DevOps.
Après une description du contexte, je vous détaillerai :
- comment la migration de package Nexus est réalisée.
- comment les Builds Jenkins sont recrées sur Azure DevOps.
- comment utiliser jgitflow et git efficacement dans les builds
Nous verrons beaucoup d'astuces et options pour orchestrer les nouvelles builds et releases. Et surtout, nous discuterons de comment accompagner les équipes dans cette transition.
C’est Quoi Maven?
Création d’un Projet Maven
Balises du POM.XML
Arborescence Standard
Buts (Goals)
TP : Projet avec Maven (JAR)
TP : Projet Web Avec Maven (WAR)
Slide for my presentation at JugSummerCamp about integration of JavaScript in software factory. First trying to use Java Tools like Maven, then embrassing JavaScript Tools like Grunt and Bower.
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
Présentation par Nicolas Lalevée des modèles de gestion de dépendances Maven, Ivy et OSGi au Toulouse Jug du 26 Mai 2011.
Abstract:
La gestion des dépendances, sac de noeuds presque par définition, on va essayer de démêler tout ça.
Après avoir fait un état des lieux avec Maven car il est l'incontournable du moment, nous irons voir comment Ivy peut décrire assez finement et gérer avec souplesse des dépendances. Nous verrons ensuite comment le modèle de dépendances d'OSGi est original et apporte encore de nouveaux concepts. Deux mondes s'affrontent alors, celui de Maven et Ivy face à celui d'OSGi; on tentera enfin d'esquisser un meilleur des deux mondes.
Jenkins Workflow plugin lets you write Jenkins jobs as pipelines using the Groovy programming language
Talk given in french at the Lyon JUG - 15/12/2015
Ez18n Annotation Processing Tool in a nutshellgdigugli
APT qu'est ce que c'est
appeler en ligne de commande
appeler APT depuis maven
l'API javax.tools - hierarchie des classes
Processor
meta model d'un fichier source java
comparaison avec java.lang.reflect
limitation par rapport à java.lang.reflect
ca sert à quoi ?
pattern avec injection - je fais un framework
analyse et transformation de code vers des fichiers plats
DSL avec des annotations
no limit ... attention aux dépendances
compilation une ou deux passes ?
APT dans mon IDE
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO Technology
En cette année 2024 qui s’annonce sous le signe de la complexité, avec :
- L’explosion de la Gen AI
-Un contexte socio-économique sous tensions
- De forts enjeux sur le Sustainable et la régulation IT
- Une archipélisation des lieux de travail post-Covid
Découvrez les Tech trends incontournables pour délivrer vos produits stratégiques.
2. Qui suis-je ?
Nicolas De loof
Software Architect , 10 ans de
Committer Maven depuis fin 2007
plugins JavaScript et GWT
Apache Commons-monitoring
Fondateur du
http://blog.loof.fr
4. Constat
Y’a toujours des
problèmes
Erreur dans la configuration
Oubli d’une dépendance
Oubli d’un fichier
Correction de dernière minute qui introduit
une régression…
Pourtant ça marche sur mon poste !
Elle est où la doc ?
etc
5. Prologue
Génération des binaires
Génération de code
Distribution
Documentation
?
Qualimétrie Gestion de version
Configuration IDE
6. Prologue
Apache Ant
Mutualisation d’un projet à l’autre…
copier/coller
Properties, properties, et encore properties
Réutilisation …
Fusion de scripts d’origines différentes
7. Prologue
Maven 1 = scripts Ant mutualisés (« plugins »)
outillés par des tags Jelly
Dérive progressive comme langage de Script
Invocations inter-plugins … cycles
Mutualisation ?
10. Maven2 … c’est quoi ?
Quelques règles de structure
Un moteur d’exécution de plugins
… et rien d’autre !
Et surtout pas un N-ième langage de script !
11. Conventions…
Maven établit des conventions « raisonnables »
sur la structure du projet :
Sources dans src
Livrables dans src/main
Tests dans src/test
Tout ce qui est construit dans target
Code généré dans target/generated-sources
…
12. … over configuration
Conventions = moins de configuration pour chaque
plugin
Plus d’homogénéité entre projets
Un projet « basique » peut être
compilé,
testé,
packagé,
diffusé
par maven sans configuration spécifique.
14. Plugin
Ecrit en Java
Projet « maven » à part entière
Peut exploiter toute librairie java jugée utile
Configuré par Injection de dépendances
Exécution 100% « étanche » : indépendant du
projet et des autres plugins
15. Cycle de vie
phase plugin
s s
Validate
generate-sources
resource:resource
generate-resources
process-resources
compiler:compile
compile
process-classes
surefire:test
test-compile
test
package jar:jar
integration-test
install:install
verify
install
deploy deploy:deploy
16. Cycle de vie
phase plugin
s s
Validate
cxf:wsdl2java
generate-sources
resource:resource
generate-resources
process-resources
compiler:compile
compile
process-classes
surefire:test
test-compile
test
package jar:jar
integration-test
install:install
verify
install
deploy deploy:deploy
17. Cycle de vie
phase plugin
s s
Validate
cxf:wsdl2java
generate-sources
resource:resource
generate-resources
process-resources
compiler:compile
compile
process-classes team@breizhjug.org
surefire:test
test-compile
test
package jar:jar
integration-test
install:install
verify
install
deploy deploy:deploy
18. Modèle du projet
phase plugin
MavenProjec
s s
Validate t
cxf:wsdl2java
generate-sources addSourceRoot
resource:resource
generate-resources
process-resources
compiler:compile
compile
getSourceRoots
process-classes team@breizhjug.org
surefire:test
test-compile
test
package jar:jar
integration-test
install:install
verify
install
deploy deploy:deploy
19. toujours plus
Il est aisé d’ajouter un plugin
Outillage de test
Contrôle qualité
Génération de code
Packaging spécifique
…
SANS impact sur l’existant
21. Besoin spécifique ?
L’écriture d’un plugin est facile
(plus que celle d’une tâche ANT)
En Java, Groovy, BeanShell …
Projet Java/Maven à part entière
toutes les librairies sont accessibles
le plugin peut être outillé de tests
Mécanisme de documentation intégré
La diffusion/mutualisation du plugin est facilitée
22. Dépendances
Maven gère les dépendances nécessaire au
projet
sans Maven avec Maven
25. Effet de bord
Maven encourage les librairies
ciblées plutôt que le gros
JAR qui fait tout
Plus de librairies
Gestion fine des dépendances
26. Repository
= Dépôt de librairies
Dépôt local ($HOME/.m2/repository)
Évite la multiplication des .jar sur le poste de dev.
Dépôt(s) public(s) (http://repo1.maven.
org/maven2)
Mise à disposition rapide des librairies libres
Dépôt privé
Gestion fine des librairies, libres ou non
28. Scopes
Compile
Utilisé pour compiler src/main/java
Runtime
Nécessaire à l’exécution mais non référencé
(ex : driver JDBC)
Test
Utilisé pour compiler et exécuter les tests
Provided
Utilisé par compiler mais doit être fournit par l’
environnement (• JEE)
33. Héritage
Mettre en commun la configuration Maven
Configuration des plugins
Dépendances communes
Infrastructure commune
Fixer les versions
Versions des plugins <versionManagement>
Versions des dépendances <dependencyManagement>
34. Modules
« Diviser pour régner »
Décomposer le projet en modules
Par domaine fonctionnel
Par technologie
Gestion précise des dépendances
Respect des règles d’architecture
Un projet POM pour enchaîner les
modules
35. Modules + héritage
« Héritage naturel »
POM racine
Configuration globale du projet
Modules
Héritent du POM racine
36. Héritage global
« Corporate POM »
Configuration globale « entreprise »
Outils Q&A
Configuration par défaut des plugins
Infrastructure
Versions de référence (scope « import »)
37. Profils
Spécialiser le build
Profil « fast »
Profil « dev »
Profil « ci »
Profil « release »
Activation
À la demande -Pxxx
Sur critère (OS, fichier, propriété « -D », …)
38. Q.A.
Site et raports
Documentation (projet, javadoc, XRef)
Résultat de l’exécution des tests
Couverture de tests : clover, cobertura, emma
Qualité du code : findbugs
Conformité aux standards : checkstyle
Patterns / Antipatterns : pmd
…
44. Support des IDE ?
Netbeans :
IntelliJ IDEA :
Eclipse : … en progrès
Sondage : quel IDE utilisez vous ?
45. Release often ?
Peu de développeurs
+
Politique frileuse Apache
+
Mécanisme de SNAPSHOTS
=
Les releases de plugin sont rares
46. Plugins absents
De nombreux outils n’ont toujours pas de plugin
maven2
La faute du plugin AntRun ?
La faute de l’API Maven ?
47. Plugins redondants
Ex :
plugins XML et XSLT chez « Mojo »
Plugin GWT
« draft » initial sous Mojo
code.google.com/p/gwt-maven
3 propositions +ou- abouties dans le JIRA Mojo
= fusion (ouf)
Statut d’un plugin ?
Réactivité ?
Moteur de recherche ?
48. Transitivité
De nombreux projets déclarent des
dépendances superflues / incorrectes
Règle : un POM.xml publié n’est jamais modifié
Les choses s’améliorent…
Utiliser un dépôt privé !
49. JAR javax.* absents
Pour raison de licence !
Mais qui s’en soucie à part la fondation Apache
?
Pourquoi pas un
« accept licence ? [Y/N] » ?
Dépôt sur java.net pour les APIs récentes
50. Version Java cible
XYZ.jar est-il compatible java 1.4 ?
Le plugin YY nécessite Java5
Maven nécessite Java 1.4
Mon projet cible Java 1.3
59. Techno-obscur
Injection de dépendances : Plexus
Séparation des classloaders : ClassWorlds
Mapping Java / XML : Modello
• Trois projets clés, hors fondation apache
Sondage : qui connaît au moins un de ces outils ?
60. Community-driven ?
Théoriquement, le développement est
« piloté par la communauté »
Et dans les faits ?
Re: [M2] Are pom.xml settings.xml really well-formed?
by Jason van Zyl – Feb 09, 2008; 06:09pm
We don't use Xerces, never have, never will.
Re: [M2] Maven core : Plexus vs Spring / OSGi ?
by Jason van Zyl – May 02, 2008; 05:53&m
As far as Spring, that's honestly never going to happen while I'm
here because I will always argue that something like XBR/Guice
which is a DI library is more appropriate and there is nothing Spring
can do that XBR cannot do today in terms of dependency injection.
61. Un gars, une vision
Rod Jonhson • Spring
Marc Fleury • JBoss
Jason Van Zyl • Maven 3
64. « Killer » plugin :
Release
Génération du livrable du projet ?
Option 1 :
MaProcédureDe50PagesJamaisAJour.doc
Option 2 :
mvn release:prepare
mvn release:perform
65.
66. « Killer » plugin :
Archetype
Démarrer un projet « propre » en 2 minutes ?
En se basant sur un projet de référence !
mvn archetype:create-from-project
mvn archetype:generate
69. Mauvaises pratiques
1. Ne pas utiliser les conventions
2. Mettre tout ce qui est possible de mettre dans le pom
3. Se rendre dépendant de l’environnement
4. Multiplier les niveaux d’héritage
5. Utiliser systématiquement quot;-Dmaven.test.skip=true »
6. Faire les releases à la main
7. S’échanger les jars par mail
8. Utilisation massive du plugin antrun
9. Confondre dependencies et dependencyManagement
10. Rester le nez dans la console
70. Bonnes pratiques
Adapter le projet à Maven, pas l’inverse
Utiliser des modules ciblés et simple
Penser « plugin »
Participer à la communauté des utilisateurs
Rapporter ses problèmes en utilisant un cas de
test simple
71. Bonnes pratiques
Verrouiller les versions des plugins
Indiquer les dépendances directes
Lire la doc ;-) [2 « open-books »]
Utiliser un gestionnaire de dépôt (archiva/nexus)
Rester indépendant de l’environnement … éviter
les settings.xml exotiques
Attention au quot;-Dmaven.test.skip=truequot;
72. Bonnes pratiques
« Les meilleures pratiques sont celles qui
correspondent à vos besoins »