
FAQ Maven 2Consultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 74, dernière mise à jour : 22 septembre 2006
Sommaire→Développement de pluginsDans une console de commandes, exécuter la commande suivante :
mvn archetype:create -DgroupId=exempleplugin -DartifactId=exemple-plugin -DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-mojo -DarchetypeVersion=1.0-alpha-4
Vous trouverez une classe Java nommée /exemple-plugin/src/main/java/exempleplugin/MyMojo.java contenant le code du plugin.
Ce modèle de plugin généré par l'archetype a créé un goal nommé touch.
Pour utiliser ce plugin, il faut maintenant l'installer.
Dans une console de commandes,accéder au répertoire du projet de plugin, et exécuter la commande suivante :
mvn install
Puis, exécuter la commande suivante :
mvn exempleplugin:exemple-plugin:touch
Vous verrez alors un répertoire target créé dans le répertoire projet et un fichier touch.txt à l'intérieur.
En ajoutant une variable de classe dans le fichier Java du plugin comme ceci :
/**
* Mon paramètre.
* @parameter expression="${mymavenparameter}"
* @required
*/
private String myJavaParameter;
Nous venons de créer une variable myJavaParameter, de type String, obligatoire(@required) et correspondant au paramètre mymavenparameter du pom.xml du projet exécutant le plugin :
<project>
...
<build>
<plugins>
<plugin>
<groupId>exempleplugin</groupId>
<artifactId>exemple-plugin</artifactId>
<configuration>
<mymavenparameter>valeur</mymavenparameter>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
En ajoutant la variable de classe suivante (avec l'annotation) :
/**
* Projet en cours de deploiement.
* @parameter expression="${project}"
*/
private org.apache.maven.project.MavenProject project;
Vous disposez maintenant d'une variable project qui sera automatiquement initialisée par Maven à l'exécution.
Vous avez maintenant accès aux informations telles que le groupId, l'artifactId, la version du projet, etc.
Pour cela, il faut utiliser l'API plexus-interactivity-api.
Ajoutez la dépendance dans votre pom.xml :
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-interactivity-api</artifactId>
<version>1.0-alpha-4</version>
</dependency>
Définir la variable de classe suivante dans votre classe Mojo :
/**
* inputHandler
* @component
*/
private InputHandler inputHandler;
Et ajouter le code suivant dans le code de votre plugin pour demander une saisie utilisateur :
String inputvalue = inputHandler.readLine();
Pour mapper un goal sur la commande mvn package par exemple, il faut ajouter l'annotation suivante dans la classe Java du goal en question :
/**
* Mon goal
*
* @goal touch
*
* @phase package
*/
Pour activer cette configuration, il faut ajouter dans le pom.xml du projet exécutant le plugin une balise execution :
<build>
<executions>
<execution>
<id>goal-execution-id</id>
<goals>
<goal>touch</goal>
</goals>
</execution>
</executions>
</build>
Avec cette configuration, le goal touch s'éxecutera à chaque appel de la commande mvn package, en complément de celle-ci.


















