有没有办法让flyway中的迁移文件应用于开发人员计算机而不是生产盒?

ams*_*ams 0 database-migration flyway

当我为我的应用程序开发一个使用大量新表的新功能时,表定义在开发几天后才会稳定.我想将这些不稳定的迁移文件签入到源代码控制中,而不是将它们应用于生产框,当我部署相同代码库的错误修复时.

有没有办法让flyway中的迁移文件应用于开发人员计算机而不是生产盒?

我不喜欢功能分支,所以我想避免功能分支,他们只是为我维护太多的努力.

ams*_*ams 5

由于我使用Spring 3.1,我能够使用弹簧配置文件解决我的问题,以检测代码所处的环境.以下是解决方案的工作原理.

  • db.migrations 是生产迁移的地方
  • dev.db.migrations是开发迁移的地方.在表格每小时更改一次的新功能的初始开发期间,迁移文件将添加dev.db.migrations到源控件并检入源控件,它将在开发人员计算机上创建.开发人员通常会吹掉测试数据库并使用示例数据重新创建它,因此不断更改其中的文件dev.db.migrations也不会给开发人员提供获取更改版本号的机会,因为他们会将文件签入源控件.

下面是我使用的弹簧配置文件飞路配置的XML.

<!-- =========================Configure Flyway ========================= -->
<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="dataSource"/>
    <property name="locations" ref="flyway-migration-locations" />
</bean>

<!-- ========================= Development Profile Configuration ========================= -->
<beans profile="development">
    <bean id="flyway-migration-locations" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <value>db.migration</value>
                <value>dev.db.migration</value>
            </list>
        </constructor-arg>
    </bean>
</beans>

<!-- ========================= Production Profile Configuration ========================= -->
<beans profile="production">
    <bean id="flyway-migration-locations" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <value>db.migration</value>
            </list>
        </constructor-arg>
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)