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:
application.yml
: Contiene las configuraciones generales del proyecto.application-dev.yml
: Contiene configuraciones para el ambiente de desarrollo.application-prod.yml
: Contiene configuraciones para el ambiente de producció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.
La configuración anterior se externaliza como parámetros de la siguiente manera:
spring.datasource.url=jdbc:postgresql://localhost:5432/prueba
spring.datasource.username=prueba
spring.datasource.password=pwd
La configuración anterior se externaliza como variables de ambiente de la siguiente manera:
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/prueba
SPRING_DATASOURCE_USERNAME=prueba
SPRING_DATASOURCE_PASSWORD=pwd
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.
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
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"
}
]
}
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: