-
Plugin et dependances
Bonjour,
Je suis en train de coder un petit plugin pour Maven2. Jusqu'ici rien d'extraordinaire ;) . J'ai commis l'erreur de faire ça en utilisant du code Java 5 avec des enum (pas d'annotation). Impossible de construire mon plugin car QDox n'arrivait pas à parser mon code. Je me suis aperçu que par dépendances transitives j'arrivais sur une version 1.5 de QDox ne supportant pas java 5, et que la version 1.6.1 elle supportait Java 5. J'ai donc utilisé le dependencyManager pour préciser que je voulais la version 1.6.1 de QDox. Cependant , à ma grande surprise c'est toujours la version 1.5 qui est utilisée.
En creusant je me suis aperçu que cela venait de la dépendance plugin-plugin 2.1 qui pointe vers les versions 2.0.1 des plugins (et non 2.0.4 qui correspond à la version de Maven que j'utilise). est ce que parce qu'on est là sur une dépendance au coeur de Maven que le dependencyManager ne s'applique pas ?
Si quelqu'un a une solution je suis preneur.
Emmanuel
-
La conclusion de cette question est la suivante :
Chaque plugin et ses dependances est chargé au travers d'un classloader qui lui est propre ce qui permet de ne pas avoir à gérer les conflits de version sur les dépendances des différents plugins. Ainsi on est sur que chacun d'entre eux fonctionnera correctement. Donc même si on définit une version dans les classloaders de haut niveau (donc dans le pom) ce sont ceux definis dans le pom du plugin qui seront utilisés par le plugin.
Emmanuel