Ce que je veux faire est d'appeler 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 en invoquant maven pour construire/empaqueter le fichier EAR (le script groovy est déjà capable de télécharger le tag depuis SCM).Comment faire des appels de commande système dans Java/Groovy?
Répondre
La méthode la plus simple pour appeler un processus externe dans Groovy consiste à utiliser la commande execute() sur une chaîne. Par exemple, pour exécuter Maven à partir d'un script groovy exécuté ceci:
"cmd /c mvn".execute()
Si vous voulez 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 le shell de commande Windows. Puisque mvn.bat est un script batch, vous en avez besoin. Pour Unix, vous pouvez appeler le shell système.
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 capturer plus tard les résultats de l'exécution du processus (pour savoir si elle a échoué ou non).
Pour la redirection de Java 7+:
new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
Si vous passez une 'List' d'args, assurez-vous que les éléments sont tous' String's et non [GString] (http://docs.groovy-lang.org/docs/latest/html/api/groovy/ lang/GString.html) s avec des variables interpolées. N'oublie pas non plus de redirectError. – seanf
Il est aussi simple que de faire
"yourCommand".execute();
Si vous souhaitez obtenir des sorties d'impression sur la commande exécutée sur la sortie standard que vous pouvez 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());
lorsque je fais ceci def homeDir = "c:/test/server"; def workDir = "$ {homeDir}/workDir"; def tempDir = "$ {workDir}/tmp"; println (homeDir); println (workDir); RunShell ("cd c:") ; // runShell ("mkdir -p $ {tempDir}"); void runShell (Chaînes) { def execute = s.execute(); execute.waitForProcessOutput (System.out, System.err); def valeur = execute.exitValue(); if (val> 0) { throw nouvelle Exception ("Valeur de sortie: $ {value}"); } } Je reçois une erreur comme ci-dessous java.io.IOException: Impossible d'exécuter le programme "cd": Erreur CreateProcess = 2, Le système ne peut pas trouver le fichier spécifié – user641887
- 1. Est-il possible de faire des appels système sur iOS?
- 2. Assemblage et appels système
- 3. Empêcher le processus enfant des appels système
- 4. Les appels système sur Windows
- 5. Comment exécuter une commande système dans Qt?
- 6. Comment faire des appels AJAX synchrones dans greasemonkey?
- 7. Comment faire des appels AJAX multiples mais séparés dans JQuery
- 8. Comment faire des appels API Win32 à partir de PHP?
- 9. système de prise de problème appels avec des scripts PHP
- 10. Les appels système se terminent
- 11. faire des appels synchrones pour d'autres applications
- 12. Appels système de .NET vers mono
- 13. Création de nouveaux appels système via KLD dans FreeBSD
- 14. Windows C appel système avec des espaces dans la commande
- 15. Peut mécaniser faire des appels Javascript?
- 16. en utilisant unix appels système en cpp
- 17. Éviter de faire plusieurs appels à Find.find ("./") dans Ruby
- 18. DBD :: Oracle entraînant une corruption des appels système?
- 19. Comment faire des appels REST pour un article particulier Amazon.com?
- 20. Comment faire des appels AJAX interdomaines vers l'API Google Maps?
- 21. Comment faire des appels async ajax en utilisant cherrypy?
- 22. Outil pour tracer les horaires des appels système io
- 23. Comment faire un système de commentaire "plugin"
- 24. Comment faire pour exécuter une commande système dans le navigateur en utilisant PHP et Xampp?
- 25. Comment obtenez-vous la sortie d'une commande système dans Go?
- 26. Méthodes de désintégration qui contiennent des appels de système de fichiers
- 27. Quelle commande getTrace renvoie les appels?
- 28. Impossible de comprendre comment faire des appels contre Facebook ApiClient dans la bibliothèque js
- 29. Comment faire pour exécuter des appels de service WCF par lots dans Silverlight BackgroundWorker
- 30. Comment faire une conférence d'appel de deux appels?
Cool! Je ne savais pas que vous pouvez le faire. – armandino
Cela a fonctionné la première fois pour moi. Je suis descendu le processus "consumeProcessOutput()" route pendant un moment, mais n'avait pas de dés avec cela. Cela aidera grandement à déterminer les raisons de l'échec de la construction de Docker. – eversMcc