【发布时间】:2015-08-30 01:54:17
【问题描述】:
我正在使用 Springboot 和 Flyway。迁移工作得很好,但我希望能够在应用程序上下文加载 test 配置文件时执行 clean flyway 命令。
如果活动配置文件是test,是否可以将SpringBoot配置为clean然后migrate?
【问题讨论】:
标签: spring-boot flyway
我正在使用 Springboot 和 Flyway。迁移工作得很好,但我希望能够在应用程序上下文加载 test 配置文件时执行 clean flyway 命令。
如果活动配置文件是test,是否可以将SpringBoot配置为clean然后migrate?
【问题讨论】:
标签: spring-boot flyway
您可以像这样覆盖 Flyway 自动配置:
@Bean
@Profile("test")
public Flyway flyway(DataSource theDataSource) {
Flyway flyway = new Flyway();
flyway.setDataSource(theDataSource);
flyway.setLocations("classpath:db/migration");
flyway.clean();
flyway.migrate();
return flyway;
}
在 Spring Boot 1.3(当前版本为 1.3.0.M1,GA 版本计划于 9 月发布)中,您可以使用 FlywayMigrationStrategy bean 来定义要运行的操作:
@Bean
@Profile("test")
public FlywayMigrationStrategy cleanMigrateStrategy() {
FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() {
@Override
public void migrate(Flyway flyway) {
flyway.clean();
flyway.migrate();
}
};
return strategy;
}
【讨论】:
在更新版本的 Spring Boot(例如 2.0.2)中,如果由于 sql 文件的更改而想要使用 clean,则可以使用属性 spring.flyway.clean-on-validation-error
【讨论】: