Spring Boot with Gradle Wrapper

Aquí vamos a aprender el comando básico para construir y ejecutar la aplicación Spring Boot con Gradle Wrapper

Para este post, suponemos que hemos iniciado un proyecto en Spring Boot con gradle.

El ‘wrapper’ de Gradle

Puedes usar Gradle sin instalarlo en su computadora. Gradle wrapper (gradlew) es un script que puede agregar a su proyecto para ejecutarlo y compilarlo sin instalaciones externas.

Con Gradle Wrapper puedes:

  • Incluir a Gradle en su proyecto sin instalaciones externas.
  • Cambiar la versión de Gradle para su proyecto sin afectar a otros proyectos.
  • Añadir Gradle al control de versiones del sistema.
  • Utilizar la versión correcta de Gradle para su proyecto.

Qué es y porqué Gradle?

Gradle se utiliza para compilar, ejecutar pruebas y construir tu aplicación.

Gradle proporciona una manera fácil de crear tareas y ejecutarlas para llevar a cabo diferentes pasos en un modo ordenado y controlado.
Al mismo tiempo, Gradle proporciona un sólido sistema de dependencias.

Algunas de las mejores características de Gradle son:

  • Performance: es más rápido y tiene optimizaciones continuas.
  • JVM: Gradle se ejecuta en JVM y utiliza la API estándar de Java.
  • Extensibilidad: Gradle proporciona tareas predefinidas, pero también puede proporcionar sus propias tareas.
  • Soporte de IDE’s: Android Studio, IntelliJ, Eclipse, etc. tienen soporte de Gradle
  • Convención: Gradle utiliza convenciones que le permiten adoptar rápidamente este sistema de construcción.
  • Información (Insight): proporciona información detallada que puedes usar para entender lo que sucede con tu compilación.

Gradle characteristics

Carpetas y archivos de Gradle

En un proyecto Spring Boot con el sistema de compilación Gradle, tenemos estas carpetas y archivos:

  • carpeta gradle: con el código Gradle compilado
  • build.gradle file: este es su propio archivo principal. Editamos este archivo para crear nuestras propias tareas y añadir dependencias.
  • archivo gradlew: script bash para ejecutar Gradle en Linux
  • gradle.bat file: script batch para ejecutar Gradle en Windows
  • setting.gradle file: otros ajustes como el nombre del proyecto

SPRING BOOT COURSE.png

El archivo build.gradle

Dentro del archivo build.gradle, podemos observar estas secciones

plugins: proporcionan funcionalidades como compilar código Java, ejecutar Spring Boot y establecer la estructura del proyecto.
group: el grupo del que formará parte este proyecto.
version: la versión actual del proyecto.
sourceCompatibility: la compatibilidad con la versión Java.
repositories: la sección del repositorio es el lugar desde el que indicamos desde dónde queremos descargar las dependencias
dependencies: la sección de dependencias es donde escribimos las dependencias que requerimos para nuestro proyecto.
task: una tarea es una secuencia de acciones con su nombre.

spring-boot-gradle-build-file.png

Plugins que necesitas en un proyecto Spring Boot

  • Spring Boot: este plugin te permite ejecutar aplicaciones Spring Boot y crear un paquete ejecutable o archivos de guerra.
  • Spring dependency management: este es un práctico plugin que importará automáticamente las spring-boot-dependencies desde la versión de Spring Boot que esté utilizando. Te permite saltar números de versión cuando declaras dependencias.
  • Java: este plugin proporciona todas las actividades necesarias para un proyecto Java como compilación, pruebas y capacidades de construcción.
plugins{
   id 'org.springframework.boot' version '2.7.3'
   id 'io.spring.dependency-management' version '1.0.13.RELEASE'
   id 'java'
}

Comandos principales para Spring Boot y Gradle

Podemos ver un breve resumen de Gradle con información sobre la versión que tenemos en nuestro proyecto.

Linux ./gradlew
Windows gradlew.bat

Gradle help

Ejecutamos el comando gradlew tasks para saber qué tareas tenemos.

Gradle help list

Si queremos más detalles para una tarea específica, podemos ejecutar ./gradlew help –task

Por ejemplo ./gradlew help –task bootRun

Gradle help detail

Las tareas principales con Gradle en un proyecto Spring Boot

Para realizar estas tareas, necesitamos los plug-ins que ya mencionamos anteriormente.

plugins{
   id 'org.springframework.boot' version '2.7.3'
   id 'java'
}

Ejecutar el proyecto de Spring Boot → gradlew bootRun

Con este comando, iniciamos nuestra aplicación en el puerto por default 8080.

Gradle boot run

Construir el proyecto de Spring Boot → gradlew build

Puedes ejecutar gradlew build -i para ver más información.

Gradle Wrapper Build

Este comando ejecutará varias tareas como configurar, descargar dependencias, compilar clases Java, ejecutar pruebas y crear archivos “jar”.

Los archivos jar ejecutables se pueden encontrar con el nombre y la versión en la carpeta build/libs. También puede ver dentro de la carpeta build las subcarpetas con las clases compiladas, las dependencias externas y los resultados de las pruebas.

Gradle build folder

Esto crea un archivo ejecutable Java jar.

Gradle

El nombre proviene del archivo settings.gradle y la versión proviene de build.gradle

Gradle

Limpia el proyecto de Spring Boot → gradlew clean

Este comando remueve la carpeta build.

Gradle clean task

Ejecutar Tests del proyecto Spring Boot → gradlew test

Esta tarea ejecutará todos los test en tu proyecto.

./gradlew test -i (el parámetro “-i” agrega mas información en la salida de la consola)

Gradle test task

Observa que en la consola tenemos los resultados del test y un informe HTML con un buen detalle.

Gradle test report

Si abrimos el archivo index.html en esta ubicación, podemos ver el informe.

Este informe es muy completo y puede ayudarte si tienes muchas pruebas ejecutadas.

Gradle test html report

Conclusión:

Este post nos enseñó cómo ejecutar, construir y ejecutar pruebas en un proyecto Spring Boot con Gradle. Gradle es excelente en la gestión y construcción de tus proyectos con Spring Boot.

Referencias:

Spring Boot Gradle Plugin Reference Guide
The Java Plugin (gradle.org)

Hi! If you find my posts helpful, please support me by inviting me for a coffee :)

Ver también