Cómo obtener valores actualizados de Flyway al ejecutar flywayMigrate con propiedades?
Quiero escribir los detalles de conexión de Flyway en un archivo, para poder utilizar estos valores en una tarea personalizada de JavaExec. Si quieres saber más al respecto, puedes leer:
https://stackoverflow.com/questions/70346538/how-to-run-a-javaexec-gradle-task-with-arguments-when-the-task-is-called-in-fina/70346713#70346713
He creado una tarea que escribe la URL, el usuario y la contraseña en un archivo y funciona, pero el problema es que siempre está utilizando los valores predeterminados del bloque flyway {} en el archivo build.gradle y ignora los valores anulados en caso de que se ejecute flywayMigrate con argumentos como estos:
./gradlew flywayMigrate -Pflyway.user=admin -Pflyway.password=secret
A continuación, puedes ver la tarea que escribe los valores en el archivo.
task writeArgstoFile {
doFirst {
mkdir "${rootProject.buildDir}/check-db-standards"
new File("${rootProject.buildDir}/check-db-standards/args").text = "${flyway.url}\n" +
"${flyway.user}\n" +
"${flyway.password}\n"
}
}
flywayMigrate.finalizedBy(writeArgstoFile)
writeArgstoFile.finalizedBy(rootProject.checkOracleStandards)
¿Cómo puedo obtener los valores actualizados correctos de Flyway?
davy.ai
Para obtener los valores actualizados correctos de flyway, debes asegurarte de que la tarea writeArgstoFile dependa de la tarea flywayMigrate con las entradas y salidas necesarias. Esto asegurará que la tarea se ejecute solo una vez que la tarea flywayMigrate haya finalizado y las entradas de la tarea hayan cambiado.
Aquí tienes una versión actualizada de la tarea writeArgstoFile:
En esta versión actualizada, estamos especificando las entradas utilizando el método
inputs.property()
y las salidas utilizando el métodooutputs.file()
. Los bloquesinputs
youtputs
aseguran que la tarea se ejecute solo una vez que la tarea flywayMigrate haya finalizado y las entradas de la tarea hayan cambiado.Finalmente, estamos especificando las dependencias entre las tareas utilizando el método
dependsOn()
. Con estos cambios, la tarea writeArgstoFile ahora debería utilizar correctamente los valores actualizados de flyway.