I am using Springboot and Flyway. The migrations work just fine but I wanted to be able perform a clean
flyway command when the application context gets loaded with
You can overwrite the Flyway autoconfiguration like this:
@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;
}
In Spring Boot 1.3 (current version is 1.3.0.M1, GA release is planned for September), you can use a FlywayMigrationStrategy bean to define the actions you want to run:
@Bean
@Profile("test")
public FlywayMigrationStrategy cleanMigrateStrategy() {
FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() {
@Override
public void migrate(Flyway flyway) {
flyway.clean();
flyway.migrate();
}
};
return strategy;
}
in more recent versions of spring boot (eg 2.0.2) you can use the property spring.flyway.clean-on-validation-error
if you want to use clean because of a change in the sql files