2. Fase 1: Desarrollo en local

Antes de automatizar cualquier proceso de integración o despliegue, es imprescindible preparar correctamente el entorno de desarrollo.

El objetivo de esta fase es garantizar que el proyecto se comporta de la misma forma en local, en el pipeline de Integración Continua y en la nube.

En esta fase no se busca desarrollar una aplicación funcional, sino validar que:

  • el proyecto se construye correctamente,

  • el entorno es reproducible,

  • y el repositorio está listo para ser automatizado.

Se trabajará con el código de ejemplo inicial, que servirá como base para las siguientes fases de la práctica.

1 Creación del proyecto base

Se crea un proyecto Java con Maven, que será la base del proceso de automatización posterior.

Este proyecto contendrá únicamente la estructura mínima necesaria para:

  • compilar código Java,

  • ejecutar la fase de tests,

  • y generar un artefacto reproducible.

2. Configuración de un entorno de construcción reproducible

El objetivo de este apartado es asegurar que el proyecto se construye siempre con la misma versión de Java, independientemente del entorno donde se ejecute.

Configuración de Java en el proyecto

Desde la configuración del proyecto se establece:

  • SDK: Amazon Corretto 17

  • Language level: 17

De este modo:

  • el entorno local,

  • el pipeline de Integración Continua,

  • y el entorno en la nube

utilizarán exactamente la misma versión de Java.

Project structure (Local, pipeline y nube usan el mismo Java)

Comprobamos el Maven:

Incorporación del Maven Wrapper

Para evitar depender de una instalación global de Maven en cada máquina, se añade el Maven Wrapper, que será el utilizado posteriormente por el pipeline.

Desde IntelliJ IDEA, utilizando la opción Run Anything (pulsando dos veces la tecla Ctrl), se ejecuta:

Pulsamos dos veces seguidas la tecla Ctrl:

mvn -N io.takari:maven:wrapper

Tras ejecutar el comando, se comprueba que se ha generado la siguiente estructura:

mvnw
mvnw.cmd
pom.xml
src
target

El uso del Maven Wrapper garantiza que todos los entornos utilizan la misma versión de Maven, independientemente de la configuración local del sistema.

Verificación de versiones

Se comprueba la versión de Java activa en el sistema:

java -version

  • SDK: Amazon Corretto 17 

  • Language level: 17

Y se verifica la versión de Java utilizada por el Maven Wrapper:

./mvnw -v
  •  Maven Wrapper (mvnw): 25... hay que cambiar

En este punto puede ocurrir que las versiones no coincidan. Por ejemplo, el proyecto puede estar configurado con Java 17 en IntelliJ, mientras que el sistema utiliza otra versión diferente.

Ajuste temporal del Java del sistema

En caso de discrepancia, se ajusta temporalmente la variable JAVA_HOME solo para el proyecto, sin afectar al entorno global:

/usr/libexec/java_home -V

export JAVA_HOME=$(/usr/libexec/java_home -v 17)

Tras el ajuste, se vuelve a comprobar:

java -version
./mvnw -v

Resultado final

Una vez realizadas las comprobaciones, el entorno queda alineado:

  • IntelliJ → Java 17

  • Maven Wrapper → Java 17

  • Sistema (temporal) → Java 17

  • Pipeline futuro → Java 17

El proyecto queda preparado para ejecutarse de forma consistente en cualquier entorno (lo que afecta a todo el pipeline)