diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java index 1e37278cc75..7a74ffb4383 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java @@ -320,7 +320,6 @@ public class FlywayAutoConfiguration { map.from(properties.getSkipExecutingMigrations()) .to((skipExecutingMigrations) -> configuration.skipExecutingMigrations(skipExecutingMigrations)); map.from(properties.getIgnoreMigrationPatterns()) - .whenNot(List::isEmpty) .to((ignoreMigrationPatterns) -> configuration .ignoreMigrationPatterns(ignoreMigrationPatterns.toArray(new String[0]))); map.from(properties.getDetectEncoding()) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java index fbea4d30165..faf493554a6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java @@ -321,7 +321,7 @@ public class FlywayProperties { /** * List of patterns that identify migrations to ignore when performing validation. */ - private List ignoreMigrationPatterns; + private List ignoreMigrationPatterns = Collections.singletonList("*:future"); /** * Whether to attempt to automatically detect SQL migration file encoding. diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java index 106c652d2f7..16952805132 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java @@ -986,6 +986,21 @@ class FlywayAutoConfigurationTests { .containsExactly(ValidatePattern.fromPattern("*:missing"))); } + @Test + void ignoreMigrationPatternsUsesDefaultValuesWhenNotSet() { + this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) + .run((context) -> assertThat(context.getBean(Flyway.class).getConfiguration().getIgnoreMigrationPatterns()) + .containsExactly(new FluentConfiguration().getIgnoreMigrationPatterns())); + } + + @Test + void ignoreMigrationPatternsWhenEmpty() { + this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) + .withPropertyValues("spring.flyway.ignore-migration-patterns=") + .run((context) -> assertThat(context.getBean(Flyway.class).getConfiguration().getIgnoreMigrationPatterns()) + .isEmpty()); + } + private ContextConsumer validateFlywayTeamsPropertyOnly(String propertyName) { return (context) -> { assertThat(context).hasFailed(); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java index 1ef6fe2f102..194e32d865b 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java @@ -30,6 +30,7 @@ import org.flywaydb.core.api.MigrationVersion; import org.flywaydb.core.api.configuration.ClassicConfiguration; import org.flywaydb.core.api.configuration.Configuration; import org.flywaydb.core.api.configuration.FluentConfiguration; +import org.flywaydb.core.api.pattern.ValidatePattern; import org.junit.jupiter.api.Test; import org.springframework.beans.BeanWrapper; @@ -95,6 +96,8 @@ class FlywayPropertiesTests { assertThat(properties.getScriptPlaceholderSuffix()).isEqualTo(configuration.getScriptPlaceholderSuffix()); assertThat(properties.isExecuteInTransaction()).isEqualTo(configuration.isExecuteInTransaction()); assertThat(properties.getCommunityDbSupportEnabled()).isNull(); + assertThat(properties.getIgnoreMigrationPatterns().stream().map(ValidatePattern::fromPattern)) + .containsExactly(configuration.getIgnoreMigrationPatterns()); } @Test