Como ejecutar scripts en Java

ejecutar scripts en Java

ejecutar scripts en Java


En esta nueva entrada de refactorizando vamos a ver como ejecutar scripts en Java de cualquier tipo, como continuación del anterior artículo de ejecución de sql con flyway.

En muchas ocasiones nos encontramos con un fichero sh o script el cual necesitamos ejecutar, por ejemplo un fichero con muchos curls. En estos casos es mejor ejecutar el fichero directamente que tener que hacer alguna transformación en Java. Si en lugar de ejecutarlo directamente tuviesemos que transformar cada petición con un cliente Rest sería muy costoso.

Por lo que vamos a ver con un ejemplo como podemos ejecutar en nuestra aplicación Java cualquier script haciendo uso de Runtime y ProcessBuilder. Y una vez ejecutado podremos recoger la respuesta tanto de error como de input para ver el resultado.

Ejecutar script en Java con Runtime

Una de las maneras que tenemos para ejecutar scripts en Java es haciendo uso del siguiente comando:

Runtime.getRuntime().exec(command);

En el que en command le pasaremos el comando a ejecutar, por ejemplo si tuvieramos que ejecutar un script sh:

String path = "/home/refactorizando/script.sh"
String[] command = {"sh",path}
Process process = Runtime.getRuntime().exec(command);

y una vez hemos finalizado el proceso podemos hacer uso de destroy()

process.destroy();

Ejecutar Script en Java con ProcessBuilder

Otra manera igual de fácil y sencilla de ejecutar un script en Java es haciendo uso de ProcessBuilder.

ProcessBuilder processBuilder = new ProcessBuilder()
processBuilder.directory(new File("/home/refactorizando/script.sh"));
Process process = processBuilder.start();



Una vez hemos terminado el proceso podemos obtener el código de salida:

int exitCode = process.exitValue();

y acabar el proceso con:

process.destroy();

Ver el output cuando se ejecuta un Script en Java

Una vez hemos ejecutado el script podemos hacer uso de process.getInputStream() y process.getErrorStream(), este último para ver los errores y ver el resultado de la ejecución de la siguiente manera:

   String commandRead;
 
   BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
    
    while ((commandRead = stdInput.readLine()) != null) {

      log.info(commandRead);
    }

    BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));

    while ((commandRead = stdError.readLine()) != null) {

      log.info(commandRead);
    }

Conclusión

En esta entrada hemos visto como ejecutar scripts en Java de dos maneras diferentes de una manera muy sencilla y con muy pocas líneas de código. Con lo que sin duda ahorrarás tiempo en tus programas en Java.

Si necesitas más información puedes escribirnos un comentario o un correo electrónico a refactorizando.web@gmail.com y te ayudaremos encantados!


No te olvides de seguirnos en nuestras redes sociales Facebook o Twitter para estar actualizado.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *