Lo que quiero hacer es invocar a maven desde un script maravilloso. El guión groovy en cuestión se usa como envoltorio de maven para crear proyectos J2EE al descargar una etiqueta e invocar a maven en lo que se descargó. ¿Cómo debo lograr invocar a maven para construir/empaquetar el EAR (el script groovy ya es capaz de descargar la etiqueta de SCM).¿Cómo hacer llamadas de comandos del sistema en Java/Groovy?
Respuesta
La forma más sencilla de invocar un proceso externo en Groovy es utilizar el comando execute() en una cadena. Por ejemplo, para ejecutar experta de un guión maravilloso ejecutar esto:
"cmd /c mvn".execute()
Si desea capturar la salida del comando y tal vez imprimirlo, usted puede hacer esto:
print "cmd /c mvn".execute().text
El ' cmd/c 'al inicio invoca el shell de comandos de Windows. Como mvn.bat es un script por lotes, necesita esto. Para Unix, puede invocar el shell del sistema.
Puede usar la clase Runtime para iniciar un comando de shell. échele un vistazo aquí: http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String) Más tarde puede capturar los resultados de la ejecución del proceso (para averiguar si falló o no).
para Java 7+ stdio redirección:
new ProcessBuilder('cmd', …args…).redirectOutput(ProcessBuilder.Redirect.INHERIT).start().waitFor();
Si pasa una 'Lista' de argumentos, asegúrese de que los elementos sean todos' String's y no [GString] (http://docs.groovy-lang.org/docs/latest/html/api/groovy/ lang/GString.html) s con variables interpoladas. Tampoco olvides 'redirectError' también. – seanf
es tan simple como hacer
"yourCommand".execute();
Si desea obtener resultados de impresión en el comando ejecutado en la salida estándar que puede hacer
def proc = "yourCommand".execute();
proc.waitForProcessOutput(System.out, System.err);
Si desea almacenar y procesar la salida, puede hacer
def proc = "yourCommand".execute();
def outputStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, System.err);
println(outputStream .toString());
cuando hago esto def homeDir = "c:/test/server"; def workDir = "$ {homeDir}/workDir"; def tempDir = "$ {workDir}/tmp"; println (homeDir); println (directorio de trabajo); runShell ("cd c:"); // runShell ("mkdir -p $ {tempDir}"); void runShell (String s) { def execute = s.execute(); execute.waitForProcessOutput (System.out, System.err); def value = execute.exitValue(); if (val> 0) { throw new Exception ("Valor de salida: $ {value}"); } } Aparece un error como el siguiente java.io.IOException: No se puede ejecutar el programa "cd": CreateProcess error = 2, El sistema no puede encontrar el archivo especificado – user641887
- 1. Llamadas al sistema en Windows
- 2. R y llamadas al sistema
- 3. ¿Cómo ejecuto los comandos del sistema en javascript?
- 4. ¿Cómo evito la ejecución de comandos arbitrarios desde una aplicación Django que hace llamadas al sistema?
- 5. ¿Cómo obtener información del sistema en PHP?
- 6. Cómo ejecutar comandos del sistema (linux/bsd) usando Java
- 7. La formación de comandos shell sanitarias o llamadas al sistema en Ruby
- 8. Debian para llamadas al sistema
- 9. Expedición de comandos del sistema nativo en Scala
- 10. x86_64 Ensamblaje Sistema Linux Confusión de llamadas
- 11. rubí tiempos de espera y comandos del sistema
- 12. GCC cómo bloquear llamadas al sistema dentro de un programa?
- 13. Establecer múltiples propiedades del sistema Línea de comandos de Java
- 14. Tkinter: ¿Cómo hacer una aplicación de bandeja del sistema?
- 15. Hacer llamadas FB.api() sincrónicas
- 16. Hacer llamadas AJAX seguras
- 17. Cómo prohibir las llamadas al sistema, GNU/Linux
- 18. Cómo hacer que Maven use la configuración del proxy del sistema
- 19. fork() - múltiples procesos y llamadas al sistema
- 20. ¿Cuándo y cómo se interrumpen las llamadas al sistema?
- 21. Implementación de llamadas/trampas del sistema dentro del kernel fuente de Linux
- 22. ¿Cómo hacer todas las llamadas AJAX secuencialmente?
- 23. Cómo hacer llamadas REST desde Google Chrome
- 24. ¿Llamadas al sistema en Windows y API nativa?
- 25. ¿Cómo puedo ejecutar una secuencia de comandos de Perl como un daemon del sistema en Linux?
- 26. ¿Qué podría hacer que las llamadas al sistema Perl comiencen a fallar?
- 27. ¿Cómo rastrear un proceso para llamadas al sistema?
- 28. Hacer que Emacs ignore el diseño del teclado del sistema
- 29. ¿Cómo puedo eliminar las llamadas al "sistema" de Perl cuando se mata la secuencia de comandos principal?
- 30. valor de retorno del sistema() en C
¡Genial! No sabía que puedes hacer eso. – armandino
Esto funcionó por primera vez para mí. Bajé por la ruta Proceso "consumeProcessOutput()" por un tiempo pero no tuve ningún dado con eso. Esto ayudará enormemente a determinar los motivos de la compilación de Docker. – eversMcc