En mi opinión, el mejor y el enfoque más flexible es:
a) perfiles de uso y filtrado - Mantener todas las propiedades de configuración de perfil específico (desarrollo, prueba, etc.) , p.ej en development.properties:
jdbc.url=jdbc:mysql://127.0.0.1:3306/testdb?useSSL=false
jdbc.user=testuser
jdbc.password=testpass
jdbc.driver=com.mysql.jdbc.Driver
A continuación, en el archivo de POM (POM posiblemente en la raíz) definir un perfil, por ejemplo:
...
<profiles>
<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<filters>
<filter>../filters/development.properties</filter>
</filters>
</build>
...
aquí se puede ver que el desarrollo perfil se activa por defecto . Si desea utilizar otro perfil configurarlo con
-p [profile-id]
b) flyway.properties conjunto con los valores filtrados - sus flyway.properties deben sentarse, por ejemplo, en src/main/recursos y los valores deben usarse a partir de los parámetros definidos en las propiedades del perfil del archivo:
flyway.driver = ${jdbc.driver}
flyway.url = ${jdbc.url}
flyway.user = ${jdbc.user}
flyway.password = ${jdbc.password}
c) flyway.properties de referencia de directorio de construcción - utilizar la configuración simple plugin (me gusta mucho limpia poms):
...
<build>
<resources>
<!-- This way we instruct maven to inject values from filters into the resources -->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<configuration>
<configFile>${project.build.directory}/classes/flyway.properties</configFile>
<locations>
<location>classpath:migration/mysql</location>
</locations>
</configuration>
</plugin>
</plugins>
</build>
...
No olvide habilitar el filtrado en recursos como se muestra en muchos ejemplos aquí. Mi versión flyway-maven-plugin es 3.2.1 y se administra en pluginManagement en parent pom, por lo que la versión no está visible aquí. También utilizo scripts sql explícitos con configuración de ubicaciones.
Muchas gracias, funciona como el encanto .. – Garry
Para referencia futura, esto funciona muy bien, pero necesita invocar mvn inicializar explícitamente antes de llamar al complemento flay, p. 'mvn initialize flyway: migrate' –