Apache Maven par Johann AVELINE
Evolution
Maven3
Maven1 et Maven2 ont été développés en parallèle mais les versions suivantes sont basées sur la structure de la deuxième version. Maven2 rencontre encore aujourd'hui un certain nombre de problèmes. L'un des reproches que l'on peut lui faire, d'un point de vue technique, est la grande complexité de son noyau. Ceci fait que peu d'évolutions ont finalement été apportées au cœur de Maven2 durant la vie de ce projet, et que la communauté des développeurs Java s'est peu impliquée dans l'évolution de Maven, hormis par le biais des plugins. Voici une liste non exhaustive des problèmes rencontrés avec Maven2 :
- Dès que l'on veut sortir un peu du système Maven2, que l'on veut faire des choses en dehors du cadre de l'outil, ça devient vite complexe.
- Le pom.xml est trop verbeux, par exemple pour la définition des dépendances.
- Trop grande utilisation de plugins, y compris pour réaliser certaines tâches simples.
- Documentation "officielle" peu fournie et assez peu intuitive. Heureusement, plusieurs ouvrages complets (et pour certains gratuits) existent !
- XML parfois redondant, même en utilisant l'héritage.
- Support pas encore parfait dans les IDE, bien que les choses s'améliorent.
- Développement et support des plugins "officiels" inégaux.
- Manque de souplesse, de rigueur sur certains principes (difficile de sortir du cycle de vie par exemple).
Retro-compatibilité
Cette version du moteur de production, utilisé par plus de 3 millions de développeurs Java, a nécessité la mise en place d'un arsenal de + de 600 tests automatisés pour assurer la rétro-compatibilité avec la version 2 et éviter de reproduire les problèmes qu'avait provoqué le passage de la version 1 à la version 2 au sein de la communauté Maven.
Réécriture du noyau
Maven2 a beaucoup souffert d'un code extrêmement lourd de son noyau, rendant ses corrections et ses évolutions difficiles et coûteuses. Un autre inconvénient de cet aspect est la très faible implication de la communauté open source autour du noyau de Maven2, surtout comparée à son implication dans le développement des plugins. La réécriture du cœur de Maven3 vise donc à augmenter l'implication de la communauté des développeurs Java dans son évolution.
Support des processus multi-cœurs
La nouveauté majeure de cette version est le support des processeurs multi-cœurs, plusieurs cores peuvent donc être utilisés simultanément au cours du Build, ce qui réduit de 10 à 40% le temps nécessaire selon divers rapports d'utilisateurs. Maven3 serait donc plus rapide, plus fiable et plus extensible que la version qui l'a précédée selon la fondation Apache.
« Maven shell »
Autre nouveauté « Maven Shell » : une nouvelle extension qui permet d'exécuter des commandes Maven dans un environnement de type Shell (lignes de commandes). Le principal attrait de cette fonctionnalité est d'accroître les performances de l'outil, en particulier grâce à l'utilisation d'un cache qui garde en mémoire les POM (Project Object Model) pour accélérer le processus de Build.
Languages supportés
Maven3 sera capable de gérer des fichiers POM écrits dans un autre format que le XML. Ainsi il sera possible d'écrire les fichiers POM en YAML(une sorte de format de texte brut, formaté d'une façon particulière). Hormis le XML et le YAML, Maven3 pourra également supporter des pom écrits en Groovy. On peut imaginer que la liste de ces langages évoluera avec le temps...
Attention, cette fonctionnalité ne devrait pas être incluse nativement dans Maven3, mais nécessitera l'utilisation d'un plugin particulier. De plus, il est probable que les IDE et les plugins Maven3 ne supportent que le XML, dans un premier temps du moins. Enfin, bien que cela ne soit pas encore arrêté, il est fort possible que le XML soit privilégié pour stocker toutes les informations (méta-données, pom, etc.) au sein des dépôts. Ainsi, le XML devrait rester le langage naturel de Maven3.
<< page précédente | page suivante >> |