Voilà le topo :

Je crée des archétypes, et je souhaiterais customiser le contexte Velocity, afin de lui injecter des valeurs calculées en Java.

Exemple :

Je souhaite retravailler ${artifactId} pour passer d'une chaine "titi-toto" à une chaine "TitiToto", me permettant dans mon répertoire archetype-resources d'utiliser une variable ${camelCaseArtifactId}.

Je vois aujourd'hui deux approches possibles :

- manipuler directement les chaînes dans les templates Velocity. Cela pose plusieurs problèmes :
* velocity n'est pas là pour faire des calculs mais pour afficher des vues
* cela engendrerait des répétitions de directives velocity
* c'est galère pour appeler des méthodes statiques ou pour instancier des classes.

- agir directement sur l'implémentation du maven-archetype-plugin. D'autant plus que l'on utilise ce plugin comme une extension pour créer un archetype. Le problème est que je n'y arrive pas

Voici où j'en suis :

- je fais dépendre mon archetype de maven-archetype-plugin:2.0-alpha4.

- j'ai repéré la création du contexte Velocity dans la classe DefaultArchetypeGenerator (package "org.apache.maven.archetype.generator") de artefact-common. Celle-ci est injectée par Plexus dans le mojo CreateProjectFromArchetypeMojo.

- mon idée était donc de copier ou d'hériter cette classe dans mon archetype, et d'y effectuer mes manipulations du contexte Velocity. J'ai du mal avec Plexus à injecter la classe custom dans le mojo (l'injection se fait par des pseudo-annotations /** @component **/ et /** @plexus.component **/).

Le top serait de pouvoir surcharger l'injection automatique dans le plugin (je n'ai pas trouvé de fichier components.xml donc j'ai supposé que plexus injectait magiquement la bonne implémentation. Am I wrong ?), dans le pom.xml de mon archetype.

Quelqu'un a-t-il des pistes sur le sujet ? Irais-je dans la mauvaise direction ?

Merci d'avance

Fabrice