Bonjour à tous,
Voilà concrètement ce que j'aimerai faire c'est de pour pouvoir exécuter un mojo dans une application java quelconque sans utiliser le command line interface.
J'ai pas mal fait de recherches mais il n'y a pas d'exemples sur le net. (Dès que l'on commence à s’intéresser au kernel de maven et à tout le code source à côté, on trouve malheureusement très peu de choses).
Par exemple, dans le cas du plugin que je suis en train d'élaborer, je fais:
L'idée serait d'utiliser ce que propose Maven Embedder pour pouvoir exécuter le mojo sans passer par le CLI. En clair, un utilisateur possède le .jar et applique son plugin (indépendamment du cycle de vie de base de maven) à un projet maven quelconque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mvn gcl:analyze -Doutput=report.xml
Donc on aurait quelque chose du genre:
Le problème étant que je ne vois pas troppas comment utiliser le tout... et comme je n'ai trouvé aucune référence expliquant comment utiliser tout ceci, je rame un peu. Disons que je ne vois pas trop comment utiliser correctement le ClassWorld... Et surtout je ne vois pas vraiment comment ajouter toute la configuration qui va derrière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import org.apache.maven.cli.*; import org.codehaus.plexus.classworlds.ClassWorld; public class GoalExecutor { @SuppressWarnings("static-access") public static void main(String[] args) { String realmId = "com.plugin.maven:gcl-maven-plugin:0.0.1-SNAPSHOT"; ClassWorld classworld = new ClassWorld(realmId,Thread.currentThread().getContextClassLoader()); MavenCli mavencli = new MavenCli(); int result = mavencli.main(new String[] { "gcl:analyze", "-Doutput=report.xml" },classworld); System.out.println("Result :" + result); } }
En passant les sources de maven embedder:
http://svn.apache.org/viewvc/maven/m...aven-embedder/
J'ai aussi vu le topic de Romaintaz ici:
http://www.developpez.net/forums/d82...mavenembedder/
Ce qui est à peut-prêt ce que j'aimerai faire; cependant vu que c'est une version 2.* et que Maven Embedder a complètement été refait sur la version 3.0.*, le mécanisme d'utilisation n'est pas le même.
Voilà, merci d'avance
Je continue mes recherches.
Partager