sábado, 27 de julio de 2013

Continuamos con Gradle?

Hola como estan? Vamos a seguir viendo un poco más esta herramienta llamada “Gradle” y aprendiendo un poco más sobre sus posibilidades, antes de ponernos realmente a trabajar con él en futuros post :D



Opciones para el Login

Bueno estas son algunas de las opciones que tenemos para cambiar la salida de Gradle y poder ver el login con mayor o menor detalle, para eso tenemos las opciones --quiet (o -q) --debug (o -d) --info (o -i) --stacktrace (o -s) --full-stacktrace (o -S) y si queremos ademas de ver el log, con diferentes cantidad de detalle, información de lo que va realizando podríamos utilizar el parametro --info (o -i)
Si usamos el comando siguiente gradle -i holaMundo, estando en la misma carpeta con el archivo build.gradle, que creamos en el anterior post, deberíamos ver una salida similar a esta:

Starting Build
Settings evaluated using empty settings script.
Projects loaded. Root project using build file '/home/gabriel/Escritorio/build.gradle'.
Included projects: [root project 'Escritorio']
Evaluating root project 'Escritorio' using build file '/home/gabriel/Escritorio/build.gradle'.
Compiling build file '/home/gabriel/Escritorio/build.gradle' using BuildScriptClasspathScriptTransformer.
Compiling build file '/home/gabriel/Escritorio/build.gradle' using BuildScriptTransformer.
All projects evaluated.
Selected primary task 'holaMundo'
Tasks to be executed: [task ':holaMundo']
:holaMundo
Task ':holaMundo' has not declared any outputs, assuming that it is out-of-date.
Hola Mundo!!!

BUILD SUCCESSFUL

Total time: 5.299 secs

Como cambiar la carpeta y el archivo de construcción ?

Como se habrán imaginado, cuando les había dicho que generen un archivo llamado build.gradle esto se debe a que es el nombre por defecto que gradle utiliza para este archivo, ya que al ejecutarlo gradle busca por defecto un archivo con ese nombre en el directorio actual, para ver lo que tiene que realizar. Pero nosotros podríamos cambiar eso con los siguientes comando: --build-file (o -b) y --project-dir (o -p) por ejemplo:
gradle -p carpetaContieneProyecto -q holaMundo (estando en una carpeta de nivel superior a la del proyecto)

O también podríamos renombrar el archivo a por ejemplo hola.build y utilizar un comando como este:
gradle -build-file -q holaMundo y debería funcionar igual ;)

Si queremos ejecutar la lista completa de tareas deberíamos usar el parámetro --dry-run (o -m) Lo que tiene de bueno este comando es que gradle primero se arma algo llamado Directed Acyclic Graph (DAG) donde gráfica todas las dependencias de las tareas, para poder ejecutarlas de manera correcta en caso de que algunas dependa de otra tarea.

Demonio Gradle

Como comente en el anterior post, gradle funciona sobre la Java Virtual Machine (JVM), entonces cada vez que utilizamos el comando “gradle” este levanta una JVM carga todas las clases, librerías necesarias y otras tareas, y esto lo hace en cada ejecución :P
Para evitar esto, nosotros podríamos pasarle como parámetro --daemon esto levanta un proceso con la instancia de la JVM con todo lo necesario la primera vez, posteriormente cuando usemos ese parámetro, vamos a seguir usando ese proceso que ya tiene cargado lo necesario, así que nos vamos a ahorrar un tiempo interesante de procesamiento :D  
Para asegurarnos de no utilizar este demonio podríamos utilizar --no-daemon y para detenerlo completamente --stop un pequeño tip, si queres usar siempre el demonio cuando ejecutamos gradle podríamos crear una alias si nuestro sistema lo soporta, en los basados en Unix, sería algo así como: alias gradled='gradle --daemon'. Si quisiéramos guardar la salida para verla posteriormente podemos usar el comando --profile que guardara las cosas en un archivo HTML donde vamos a poder verlo tranquilamente desde nuestro navegador :D

Como un dato extra, aunque yo no lo uso :D podemos utilizar una interfaz gráfica para gradle usando el parámetro --gui :P

Web Oficial:

Bueno eso es todo por ahora, más adelante vamos a ver cosas más interesantes sobre esta herramienta, con este post creo que terminamos de ver las opciones generales, aunque casi no escribimos tareas de automatización :P Nos vemos en la próxima ;)

Saludos a todos, Gabriel