Este codelab está planeado para mostrar diferentes formas de agregar configuraciones necesarias para la ejecución un proyecto de CONACyT.

Hay varias formas para poder agregar las configuraciones:

En el proyecto se encuentran tres archivos principales de configuración:

Cualquier configuración de los archivos, se puede sobreescribir usando tanto parámetros al momento de ejecutar la aplicación como variables de ambiente.

La configuración de la base de datos, en el archivo application-dev.yml, es similar a lo siguiente:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/prueba
    username: prueba
    password:

Para modificar la configuración de la base de datos, solo se requieren especificar las llaves url, username y password. Todas ellas se pueden externalizar tanto con parámetros como con variables de ambiente.

Traducción a parámetros

La configuración anterior se externaliza como parámetros de la siguiente manera:

Traducción a variables de ambiente

La configuración anterior se externaliza como variables de ambiente de la siguiente manera:

Dependiendo de si la aplicación se está ejecutando por medio de Maven o por medio de Java, la forma de modificar la configuración cambia.

Configuración en ejecución por medio de Maven

Si el proyecto se está ejecutando por medio de maven, es necesario usar el parámetro -Drun.arguments del comando mvn. De tal manera que la configuración de la base de datos se agregaría de la siguiente forma:

mvn -Drun.arguments=--spring.datasource.url=jdbc:postgresql://localhost:5432/prueba,--spring.datasource.username=prueba,--spring.datasource.password=pwd

Configuración en ejecución por medio de Java

Si el proyecto ya se empaquetó y se está ejecutando por medio del comando java, la configuración se puede agregar de forma directa:

java -jar ejemplo-0.0.1-SNAPSHOT.jar --spring.datasource.url=jdbc:postgresql://localhost:5432/prueba --spring.datasource.username=prueba --spring.datasource.password=pwd

A diferencia del método anterior, se se usan variables de ambiente, no importa si la aplicación se ejecuta por medio de Maven o por medio de Java. Sin embargo, la declaración de la variable de ambiente dependerá del sistema operativo en que se esté ejecutando la aplicación.

En un sistema UNIX-like la configuración se podría hacer de la siguiente forma:

export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/prueba
export SPRING_DATASOURCE_USERNAME=prueba
export SPRING_DATASOURCE_PASSWORD=pwd
./mvnw

En un sistema Windows la configuración se podría hacer de la siguiente forma:

set SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/prueba
set SPRING_DATASOURCE_USERNAME=prueba
set SPRING_DATASOURCE_PASSWORD=pwd
mvnw.cmd

En caso de que se requiera modificar el proyecto por variables de ambiente, se tiene que usar un archivo llamado .evn en la raíz del proyecto; este archivo debe contener las variables de ambiente requeridas para la ejecución.

Para que el proyecto use el archivo .env se requiere que el archivo .vscode/launch.json tenga una entrada como esta:

{
    "configurations": [
        {
            "type": "java",
            "name": "Spring Boot-PruebaApp<prueba>",
            "request": "launch",
            "cwd": "${workspaceFolder}",
            "console": "internalConsole",
            "mainClass": "mx.conacyt.crip.ejemplos.PruebaApp",
            "projectName": "prueba",
            "args": "",
            "vmArgs": ["--add-opens", "java.base/jdk.internal.misc=ALL-UNNAMED", "-Dio.netty.tryReflectionSetAccessible=true"],
            "envFile": "${workspaceFolder}/.env"
        }
    ]
}

Contenido del archivo env

El archivo .env debe tener una entrada por cada variable de ambiente requerida.

A continuación se muestra un ejemplo del archivo .env:

SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/prueba
SPRING_DATASOURCE_USERNAME=prueba
SPRING_DATASOURCE_PASSWORD=pwd

Revisar el codelab de Como depurar un proyecto JHipster.

Para más información sobre la configuración del proyecto, revisar: