任何人都可以建议是否有flyway的配置设置,以便它可以忽略某个sql文件,具体取决于我迁移数据库的环境?
我正在使用maven flyway插件并拥有一些sql文件,例如:
V1.01_schema.sql
V1.02_data.sql
V1.03_testdata.sql
当我将数据库移动到生产中时,我不想应用testData.sql文件。我可以通过任何方式忽略这个文件吗?
答案 0 :(得分:1)
是的,您可以定义一个特定的配置文件,告诉flyway-maven-plugin
忽略特定的执行。我们的想法是将流程分为两个执行:一个是环境共用的,另一个是测试环境特有的。使用dev
配置文件构建时,不会跳过第二次执行,而在默认情况下将跳过它。
<properties>
<flyway.prod>true</flyway.prod>
</properties>
<profiles>
<profile>
<id>dev</id>
<activation>
<property>
<name>dev</name>
<value>true</value>
</property>
</activation>
<properties>
<flyway.prod>false</flyway.prod>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>migrate-1</id>
<goals>
<goal>migrate</goal>
</goals>
<configuration>
<locations>
<location>V1.01_schema.sql</location>
<location>V1.02_data.sql</location>
</locations>
</configuration>
</execution>
<execution>
<id>migrate-test</id>
<goals>
<goal>migrate</goal>
</goals>
<configuration>
<skip>${flyway.prod}</skip>
<locations>
<location>V1.03_testdata.sql</location>
</locations>
</configuration>
</execution>
</executions>
<configuration>
<!-- common configuration here -->
</configuration>
</plugin>
</plugins>
</build>