Comment faire des appels de commande système en Java / Groovy?
Ce que je veux faire est d'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 invoquer maven pour construire/empaqueter L'EAR (le script groovy est déjà capable de télécharger la balise à partir de SCM).
4 réponses
Le moyen le 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 voulez capturer la sortie de la commande et peut-être l'imprimer, vous pouvez faire ceci:
print "cmd /c mvn".execute().text
Le 'cmd / c' au début appelle le shell de commande Windows. Depuis mvn.bat est un script batch dont vous 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 faire
def proc = "yourCommand".execute();
proc.waitForProcessOutput(System.out, System.err);
Si vous voulez stocker et traiter la sortie, vous pouvez faire
def proc = "yourCommand".execute();
def outputStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, System.err);
println(outputStream .toString());
Pour la redirection Java 7+ 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 pouvez ensuite capturer les résultats de l'exécution du processus (pour savoir si elle a échoué ou non).