ams*_*ams 0 database-migration flyway
当我为我的应用程序开发一个使用大量新表的新功能时,表定义在开发几天后才会稳定.我想将这些不稳定的迁移文件签入到源代码控制中,而不是将它们应用于生产框,当我部署相同代码库的错误修复时.
有没有办法让flyway中的迁移文件应用于开发人员计算机而不是生产盒?
我不喜欢功能分支,所以我想避免功能分支,他们只是为我维护太多的努力.
由于我使用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)
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |