忽略环境的SQL文件

时间:2016-02-04 16:04:49

标签: maven flyway

任何人都可以建议是否有flyway的配置设置,以便它可以忽略某个sql文件,具体取决于我迁移数据库的环境?

我正在使用maven flyway插件并拥有一些sql文件,例如:

V1.01_schema.sql
V1.02_data.sql
V1.03_testdata.sql

当我将数据库移动到生产中时,我不想应用testData.sql文件。我可以通过任何方式忽略这个文件吗?

1 个答案:

答案 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>