Solución:
Eche un vistazo al properties-maven-plugin
. Le permite leer las propiedades de un archivo para luego usarlas en su pom.
Agregue la siguiente definición de complemento:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>src/main/resources/abc.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
Si abc.properties
contiene:
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://127.0.0.1:3306/db_ab
jdbc.user = db_user
A continuación, puede utilizar las propiedades de la siguiente manera:
<!-- language: xml -->
<driver>${jdbc.driver}</driver>
<url>${jdbc.url}</url>
<user>${jdbc.user}</user>
en la versión 3.0 tienes que usar configFile como:
<configFile>src/main/resources/db/config/flyway.properties</configFile>
En mi opinión, el mejor y más flexible enfoque es:
a) usar perfiles y filtrado – mantener todas las propiedades de configuración para un perfil específico (desarrollo, prueba, etc.), por ejemplo, en desarrollo.propiedades:
jdbc.url=jdbc:mysql://127.0.0.1:3306/testdb?useSSL=false
jdbc.user=testuser
jdbc.password=testpass
jdbc.driver=com.mysql.jdbc.Driver
Luego, en su archivo pom (posiblemente en root pom) defina un perfil, por ejemplo:
...
<profiles>
<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<filters>
<filter>../filters/development.properties</filter>
</filters>
</build>
...
aquí puedes ver eso desarrollo El perfil está activado de forma predeterminada. Si desea utilizar otro perfil, configúrelo con
-p [profile-id]
B) establecer flyway.properties con filtrado valores: sus flyway.properties deben ubicarse, por ejemplo, en src / main / resources y los valores deben usarse a partir de los parámetros definidos en el archivo de propiedades del perfil:
flyway.driver = ${jdbc.driver}
flyway.url = ${jdbc.url}
flyway.user = ${jdbc.user}
flyway.password = ${jdbc.password}
C) referencia flyway.properties desde el directorio de compilación – use una configuración de complemento simple (realmente me gustan los poms limpios):
...
<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 de recursos como se muestra en muchos ejemplos aquí. Mi La versión de flyway-maven-plugin es 3.2.1 y se administra en pluginManagement en el pom principal, por lo que la versión no es visible aquí. También utilizo scripts SQL explícitos con configuración de ubicaciones.