Spring boot 如何在SpringBoot应用程序中运行flyway:迁移前清理?

Spring boot 如何在SpringBoot应用程序中运行flyway:迁移前清理?,spring-boot,flyway,Spring Boot,Flyway,我使用的是Springboot和Flyway。迁移工作正常,但我希望在应用程序上下文加载testprofile时能够执行cleanflyway命令 是否可以将SpringBoot配置为执行清理然后迁移如果活动配置文件为测试?您可以像这样覆盖Flyway自动配置: @Bean @简介(“测试”) 公共飞行道飞行道(数据源){ Flyway Flyway=新Flyway(); setDataSource(数据源); setLocations(“classpath:db/migration”); fl

我使用的是Springboot和Flyway。迁移工作正常,但我希望在应用程序上下文加载
test
profile时能够执行
clean
flyway命令


是否可以将SpringBoot配置为执行
清理
然后
迁移
如果活动配置文件为
测试

您可以像这样覆盖Flyway自动配置:

@Bean
@简介(“测试”)
公共飞行道飞行道(数据源){
Flyway Flyway=新Flyway();
setDataSource(数据源);
setLocations(“classpath:db/migration”);
flyway.clean();
flyway.migrate();
返回跑道;
}
在Spring Boot 1.3(当前版本为1.3.0.M1,GA版本计划于9月发布)中,您可以使用FlywayMigrationStrategy bean定义要运行的操作:

@Bean
@简介(“测试”)
公共飞行路线迁移策略CleanMigrateStregy(){
FlywayMigrationStrategy=新的FlywayMigrationStrategy(){
@凌驾
公共空心迁移(飞道飞道){
flyway.clean();
flyway.migrate();
}
};
回报策略;
}

在较新版本的spring boot(如2.0.2)中,如果由于sql文件中的更改而希望使用clean,则可以使用属性
spring.flyway.clean on validation error
,但如果服务器仅重新启动为热交换,是否有办法避免此行为?在开发过程中,删除整个数据库是不必要的,事实上这是相当烦人的。有解决办法吗?