Cuando empezamos a trabajar con Gradle, lo primero que debemos entender es cómo se organiza un proyecto dentro de esta herramienta. En Gradle, un proyecto es básicamente una unidad que nos permite obtener un artefacto, como puede ser un archivo jar con nuestro código Java, un war para aplicaciones web o incluso un paquete para subir a un repositorio Maven. Este proyecto se compone de tareas, que son acciones específicas que realizan algo concreto, como compilar código, empaquetar archivos o generar documentación.
Cada tarea en Gradle está diseñada para hacer una sola cosa. Por ejemplo, podríamos tener una tarea para compilar el código, otra para empaquetar el resultado en un zip y otra para crear un manual en PDF. La idea es que estas tareas sean pequeñas y específicas, facilitando así la automatización y organización de nuestro proyecto.
Para crear nuestro primer proyecto de Gradle, lo que hacemos es elegir una carpeta donde trabajar, por ejemplo una llamada hola.gradle. Dentro de esta carpeta creamos un archivo llamado build.gradle, que es el archivo estándar donde definiremos nuestras tareas. Aunque el nombre podría ser otro, es recomendable seguir esta convención para que Gradle lo reconozca automáticamente.
Definir una tarea es muy sencillo. Por ejemplo, para crear una tarea llamada compilar, escribimos lo siguiente en el archivo build.gradle:
task compilar << {
println "hola mundo, estoy compilando"
}
Aquí usamos la palabra clave task seguida del nombre de la tarea, y luego entre corchetes definimos lo que queremos que haga. En este caso, simplemente imprime un mensaje en pantalla. Esta simplicidad es posible gracias a que Gradle utiliza un lenguaje específico para su dominio, conocido como DSL (Domain Specific Language). Este lenguaje está diseñado para ser fácil de leer y escribir, con palabras clave que representan acciones comunes en la construcción de proyectos.
Para ejecutar esta tarea, nos situamos en la carpeta donde está nuestro proyecto y usamos el comando:
gradle -q compilar
El parámetro -q indica a Gradle que reduzca la salida a lo esencial, evitando mensajes adicionales que pueden ser confusos o innecesarios. Si lo quitamos, Gradle mostrará más información sobre la ejecución de la tarea, como el tiempo que tardó o el estado final.
Dentro de las tareas podemos escribir código Groovy, que es el lenguaje en el que está basado Gradle. Groovy es compatible con Java y nos permite definir la lógica que necesitemos dentro de cada tarea. Aunque no es obligatorio conocer Groovy para usar Gradle, entenderlo puede facilitar mucho la creación de scripts más complejos.
Además de nuestras tareas personalizadas, Gradle incluye algunas tareas predefinidas que podemos listar con:
gradle -q tasks
Esto nos muestra todas las tareas disponibles en el proyecto, incluyendo las que hemos creado y las que vienen por defecto, como init, wrapper o help.
Podemos seguir creando más tareas de la misma manera. Por ejemplo, una tarea para ejecutar pruebas unitarias:
task pruebasUnitarias << {
println "estoy lanzando pruebas unitarias"
}
O una tarea para empaquetar:
task empaquetar << {
println "estoy creando un zip"
}
Después de definir estas tareas, si volvemos a listar las tareas disponibles con gradle -q tasks, veremos que aparecen junto con la tarea compilar que creamos inicialmente. Ejecutarlas es tan simple como usar gradle -q seguido del nombre de la tarea, y veremos el mensaje correspondiente en la consola.
Así, con unas pocas líneas y comandos, podemos empezar a automatizar procesos básicos en nuestros proyectos usando Gradle, creando tareas específicas que nos ayuden a compilar, empaquetar o ejecutar pruebas de manera sencilla y organizada.