Paris JUG de mai : Build, Share & Deploy jusqu’au bout de la nuit (4)
Petit tour au buffet avant d’attaquer la deuxième partie de soirée. |
Comme d’habitude, c’est encore là qu’on apprend des tas de choses, et qu’on peut revenir un peu au réalités : Quel est le revers de la médaille ? quand va-t-on me laisser l’utiliser ?
Tout le monde est très sage ce soir. 21h, ils sont tous remontés dans la salle de conférence à l’heure dite, sans le coup de sifflet rituel d’Antonio. Très motivés par Maven 3 ?
Maven 3
Nicolas De loof et Arnaud Héritier, tous les deux commiters Maven, nous ont préparé un véritable show en duo basé sur les rôles de Jamy et Fred dans l’émission C’est pas sorcier.
Allez Marcel, ‘On va migrer vers Maven 3′ !
Nicolas De loof est très bon dans son rôle. Il a réussi à nous faire vivre ses relations compliquées avec son pote Jason qui veut faire plein de trucs avec Maven. Il parle de Jason van Zyl le fondateur de Maven. Présentation très vivante, sur un sujet qui n’était pas évident vous allez le voir.
Maven 3 est compatible avec toutes les versions précédentes. Plus de tests ont été faits pour le rendre plus robustes et assurer la compatibilité. Dans 99,99 % des cas ça passe tout seul. Dans les autres cas, ce sont des problèmes dus aux descripteurs de projet, car ils sont plus stricts en Maven 3. Et aussi Maven Site ne marche pas en Maven 3. C’est plus la peine de leur dire : ils savent.
Maven 3 a été entièrement refondu. L’objectif N°1 était d’améliorer la compatibilité.
L’équipe Maven a appris de ses erreurs. Maven 1 était immaintenable. Maven 2 a fait table rase, plus maintenable, un support des plugins. Une joli architecture mais pas souple et peu extensible, difficile à aborder pour les gens qui veulent rentrer dans le code. Nicolas nous partage les déboires qu’il a pu rencontré lors du développement de son plugin GWT.
Les nouveautés
Quelques modifications prévues : supprimer Plexus, mal documenté et peu utilisé en dehors de Maven, pour le remplacer par un IoC standard base sur la JSR 330. Spring ou sont Guice est envisagés, mais rien de clair pour le moment.
Maven passe enfin sur Java 5 et va donc enfin pouvoir utiliser les Generics. Le code est plus propre. Les documentations ont été améliorées, en particulier pour distinguer les API publiques et privées.
Le modèle de plugin de Maven 3 est plus interactif. Le plugin Aggregator qui servait à coordonner des opérations entre modules est supprimé. Une nouvelle fonction le Build plan va rendre les plugins plus adaptables au contexte. Le build plan permettra au plugin de comprendre ce qui va se passer lors de son exécution et ils pourront se configurer en fonction de ces informations. Un exemple : le build plan pourra lister les tests à faire avant de commencer ce qui évitera de les jouer plusieurs fois parce qu’on ne sait pas s’ils ont été faits ou pas. Les builds plans devraient éviter d’avoir besoin d’Aggregator.
Cela promet une meilleure intégration dans Eclipse. Maven 2 ne permettait que de réaliser des builds complets. Les build plus adaptables de Maven 3 permettront de laisser Eclipse faire ce qu’il sait faire dans les étapes du build (compiler par exemple) et de ne réaliser dans Maven que ce qui reste. Le plugin Eclipse les retirera du build plan, ce qui évitera les conflits.
Maven rencontre OSGI. Maven Tycho implémente la gestion des modules et des dépendances basée sur OSGI. Eclipse est basé sur un modèle OSGI. Le moteur qui installe et les gère les dépendances est Eclipse P2 (pour Provisioning Platform). Grâce à Tycho, Maven aura une meilleure intégration avec Eclipse et les repositories de bundle OSGI au format P2. Le plugin Eclipse M2Eclipse s’appuie sur Tycho.
Le POM devient polyglotte. Il pourra être écrits dans d’autres langages qu’XML (Python, Groovy). une nouvelle syntaxe va également permettre de définir des exclusions globalement et non pas au niveau de chaque dépendance.
Les logs sont plus lisibles.
La possibilité de faire des mixins c’est à dire d’avoir des héritages multiples et non plus strictement hiérarchiques.
Les performances sont améliorées, en particulier par la possibilité de paralléliser certaines parties du build. C’est Maven qui analyse les branches parallélisables et les points de synchronisation. Par exemple, sur un bi-core, le temps passe de 11mn en Maven 2, à 10 mn en Maven 3 et 6 mn en Maven 3 sur les 2 cores en parallèle. Bien sûr tout celà dépend de la présence ou pas d’éléments parallélisables. Cette possibilité est aussi intéressante pour les fermes d’intégration continue (comme Hudson) qui hébergent des builds complexes et longs.
De nouveaux outils : une console Maven Shell qui permet d’avoir un résultat en couleur, et accélère un peu les builds en évitant de relancer la JVM et en mettant en cache les descripteurs Maven. Elle permet aussi de configurer des environnements Maven distincts selon les projets.
Pourquoi passer à Maven 3 ?
Il n’y a pas de fonctionnalité renversante, mais ça fonctionne mieux et plus vite. Le nouveau plugin Eclipse M2Eclipse devrait permettre aussi de gagner du temps et est à tester.
Maven 3 est en béta 1 pour le moment. L’équipe travaille toujours à porter les composants qui ne marchent pas comme Maven Site et eclipse:eclipse et attends vos retours.
L’organisation est toujours assez dirigée par le haut par Sonatype, et par Jason le pote à Nicolas, mais elle se professionnalise et les processus sont plus clairs. Maven dispose d’une très forte communauté de développeurs et d’utilisateurs sénior. Après la refonte en Maven 3 de nouveaux développeurs arrivent. C’est une bonne nouvelle, la communauté revie.
Vous pouvez retrouver les deux trublions dans leur livre Apache Maven aux éditions Pearson. Chose à noter, il est en français, c’est rare;
Un exemplaire a été donné à une des Duchess.
Appel pour l’ISEP
Antonio a profité du micro pour faire un appel pour l’ISEP. L’ISEP met ses locaux à disposition du JUG gracieusement. Le JUG vous propose de le remercier en réalisant des présentations ou des cours de quelques heures pour les étudiants de l’ISEP sur des sujets que vous maîtrisez. Ces cours ont lieu dans la journée.
N’hésitez pas à contacter l’équipe du JUG si vous avez des idées ou des propositions.
21h30 plus qu’une présentation, mais si on fait tout ça c’est bien pour déployer non ?
Précédent : la présentation Git | Suivant : la présentation Deployit |
Les photos sont de José Paumard et Claude Falguière.