[résolu] Création plugin - compilation dans le plugin
Bonjour,
Je suis en train d'écrire un plugin maven. Lorsque celui-ci sera utilisé dans le projet maven d'un utilisateur du plugin il devra avant tout compiler une classe écrite par l'utilisateur pour ensuite l'utiliser. En gros l'utilisateur écrira cette classe qui lui permettra de customiser le fonctionnement du plugin.
Pour cela j'aimerais que mon plugin exécute une première compilation de sources durant la phase generate-sources du projet maven de l'utilisateur qui utilise ce plugin. Est-ce que c'est possible ?
En résumé, je voudrais que mon plugin lance le goal compile de maven-compiler-plugin durant la phase generate-sources du projet cible.
[résolu] Création plugin - compilation dans le plugin
J'ai trouvé une solution, il suffit d'ajouter la description complète du goal dans le cycle de vie personnalisé de mon plugin :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <?xml version="1.0" encoding="UTF-8"?>
<lifecycles xmlns="http://maven.apache.org/LIFECYCLE/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/LIFECYCLE/1.0.0 http://maven.apache.org/xsd/lifecycle-1.0.0.xsd">
<lifecycle>
<id>ogph-lifecycle</id>
<phases>
<phase>
<id>process-sources</id>
<executions>
<execution>
<goals>
<goal>prepare</goal>
</goals>
</execution>
<execution>
<goals>
<goal>org.apache.maven.plugins:maven-compiler-plugin:compile</goal>
</goals>
</execution>
<execution>
<goals>
<goal>reverse-bdd</goal>
<goal>modify-pojos</goal>
<goal>clean-target</goal>
</goals>
</execution>
</executions>
</phase>
</phases>
</lifecycle>
</lifecycles> |
Donc j'exécute le goal org.apache.maven.plugins:maven-compiler-plugin:compile au moment où je le veux du cycle de vie de mon plugin.
Malheuresement avec le plugin maven-compiler-plugin il n'est pas possible de paramétrer le répertoire où les classes compilées sont générées (target/classes), donc pour éviter que ces classes ne se retrouve dans le jar généré j'ai ajouté un goal clean-target qui va effacer le répertoire target/classes avant la phase compile avec une simple tâche Ant. (Pour rappel dans mon cas, ces classes compilées servent au plugin lui-même dans son exécution mais ne font pas partie du code du projet lui-même)