Ce que je veux faire, c'est invoquer maven à partir d'un script groovy. Le script groovy en question est utilisé comme un wrapper maven pour construire des projets J2EE en téléchargeant une balise et en invoquant maven sur ce qui a été téléchargé. Comment dois-je accomplir l'invocation de maven pour construire/empaqueter l'EAR (le script groovy est déjà capable de télécharger la balise depuis SCM).
La façon la plus simple d'invoquer un processus externe dans Groovy est d'utiliser la commande execute () sur une chaîne. Par exemple, pour exécuter maven à partir d'un script groovy, exécutez ceci:
"cmd /c mvn".execute()
Si vous souhaitez capturer la sortie de la commande et peut-être l'imprimer, vous pouvez le faire:
print "cmd /c mvn".execute().text
Le "cmd/c" au début appelle la commande Windows Shell. Puisque mvn.bat est un script batch, vous en avez besoin. Pour Unix, vous pouvez appeler le shell système.
C'est aussi simple que de faire
"yourCommand".execute();
Si vous voulez obtenir des sorties d'impression sur la commande exécutée sur la sortie standard, vous pouvez le faire
def proc = "yourCommand".execute();
proc.waitForProcessOutput(System.out, System.err);
Si vous souhaitez stocker et traiter la sortie, vous pouvez le faire
def proc = "yourCommand".execute();
def outputStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, System.err);
println(outputStream.toString());
Pour Java 7+ redirection stdio:
new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
Vous pouvez utiliser la classe Runtime pour lancer une commande Shell. jetez un oeil ici: http://Java.Sun.com/javase/6/docs/api/Java/lang/Runtime.html#exec (Java.lang.String) Vous pourrez plus tard capturer les résultats de l'exécution du processus (pour savoir s'il a échoué ou non).