From 400a1c96ae213656c1782191909481d0031dc52c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Mon, 19 May 2025 15:41:29 +0200 Subject: [PATCH] Move Flyway testcontainers support into spring-boot-flyway --- spring-boot-project/spring-boot-flyway/build.gradle | 9 +++++++++ .../FlywayContainerConnectionDetailsFactoryTests.java | 2 +- .../src/dockerTest/resources/logback-test.xml | 4 ++++ .../src/dockerTest/resources/spring.properties | 1 + .../FlywayContainerConnectionDetailsFactory.java | 2 +- .../boot/flyway/testcontainers}/package-info.java | 2 +- .../src/main/resources/META-INF/spring.factories | 4 ++++ .../spring-boot-testcontainers-all/build.gradle | 3 --- .../src/main/resources/META-INF/spring.factories | 1 - 9 files changed, 21 insertions(+), 7 deletions(-) rename spring-boot-project/{spring-boot-testcontainers-all/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/flyway => spring-boot-flyway/src/dockerTest/java/org/springframework/boot/flyway/testcontainers}/FlywayContainerConnectionDetailsFactoryTests.java (97%) create mode 100644 spring-boot-project/spring-boot-flyway/src/dockerTest/resources/logback-test.xml create mode 100644 spring-boot-project/spring-boot-flyway/src/dockerTest/resources/spring.properties rename spring-boot-project/{spring-boot-testcontainers-all/src/main/java/org/springframework/boot/testcontainers/service/connection/flyway => spring-boot-flyway/src/main/java/org/springframework/boot/flyway/testcontainers}/FlywayContainerConnectionDetailsFactory.java (96%) rename spring-boot-project/{spring-boot-testcontainers-all/src/main/java/org/springframework/boot/testcontainers/service/connection/flyway => spring-boot-flyway/src/main/java/org/springframework/boot/flyway/testcontainers}/package-info.java (90%) diff --git a/spring-boot-project/spring-boot-flyway/build.gradle b/spring-boot-project/spring-boot-flyway/build.gradle index 7e56321878..c81ff318c8 100644 --- a/spring-boot-project/spring-boot-flyway/build.gradle +++ b/spring-boot-project/spring-boot-flyway/build.gradle @@ -3,6 +3,7 @@ plugins { id "org.springframework.boot.auto-configuration" id "org.springframework.boot.configuration-properties" id "org.springframework.boot.deployed" + id "org.springframework.boot.docker-test" id "org.springframework.boot.optional-dependencies" } @@ -15,9 +16,17 @@ dependencies { optional(project(":spring-boot-project:spring-boot-actuator-autoconfigure")) optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional(project(":spring-boot-project:spring-boot-testcontainers")) optional("org.flywaydb:flyway-database-oracle") optional("org.flywaydb:flyway-database-postgresql") optional("org.flywaydb:flyway-sqlserver") + optional("org.testcontainers:jdbc") + + dockerTestImplementation(project(":spring-boot-project:spring-boot-test")) + dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) + dockerTestImplementation("org.testcontainers:junit-jupiter") + dockerTestImplementation("org.testcontainers:postgresql") + dockerTestRuntimeOnly("org.postgresql:postgresql") testImplementation(project(":spring-boot-project:spring-boot-jooq")) testImplementation(project(":spring-boot-project:spring-boot-test")) diff --git a/spring-boot-project/spring-boot-testcontainers-all/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-flyway/src/dockerTest/java/org/springframework/boot/flyway/testcontainers/FlywayContainerConnectionDetailsFactoryTests.java similarity index 97% rename from spring-boot-project/spring-boot-testcontainers-all/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactoryTests.java rename to spring-boot-project/spring-boot-flyway/src/dockerTest/java/org/springframework/boot/flyway/testcontainers/FlywayContainerConnectionDetailsFactoryTests.java index b382f6a29f..0559c98d73 100644 --- a/spring-boot-project/spring-boot-testcontainers-all/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-flyway/src/dockerTest/java/org/springframework/boot/flyway/testcontainers/FlywayContainerConnectionDetailsFactoryTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.testcontainers.service.connection.flyway; +package org.springframework.boot.flyway.testcontainers; import org.flywaydb.core.Flyway; import org.junit.jupiter.api.Test; diff --git a/spring-boot-project/spring-boot-flyway/src/dockerTest/resources/logback-test.xml b/spring-boot-project/spring-boot-flyway/src/dockerTest/resources/logback-test.xml new file mode 100644 index 0000000000..b8a41480d7 --- /dev/null +++ b/spring-boot-project/spring-boot-flyway/src/dockerTest/resources/logback-test.xml @@ -0,0 +1,4 @@ + + + + diff --git a/spring-boot-project/spring-boot-flyway/src/dockerTest/resources/spring.properties b/spring-boot-project/spring-boot-flyway/src/dockerTest/resources/spring.properties new file mode 100644 index 0000000000..47dff33f0b --- /dev/null +++ b/spring-boot-project/spring-boot-flyway/src/dockerTest/resources/spring.properties @@ -0,0 +1 @@ +spring.test.context.cache.maxSize=1 \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers-all/src/main/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactory.java b/spring-boot-project/spring-boot-flyway/src/main/java/org/springframework/boot/flyway/testcontainers/FlywayContainerConnectionDetailsFactory.java similarity index 96% rename from spring-boot-project/spring-boot-testcontainers-all/src/main/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactory.java rename to spring-boot-project/spring-boot-flyway/src/main/java/org/springframework/boot/flyway/testcontainers/FlywayContainerConnectionDetailsFactory.java index 2bc5ee4e29..04e4b6f51a 100644 --- a/spring-boot-project/spring-boot-testcontainers-all/src/main/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-flyway/src/main/java/org/springframework/boot/flyway/testcontainers/FlywayContainerConnectionDetailsFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.testcontainers.service.connection.flyway; +package org.springframework.boot.flyway.testcontainers; import org.testcontainers.containers.JdbcDatabaseContainer; diff --git a/spring-boot-project/spring-boot-testcontainers-all/src/main/java/org/springframework/boot/testcontainers/service/connection/flyway/package-info.java b/spring-boot-project/spring-boot-flyway/src/main/java/org/springframework/boot/flyway/testcontainers/package-info.java similarity index 90% rename from spring-boot-project/spring-boot-testcontainers-all/src/main/java/org/springframework/boot/testcontainers/service/connection/flyway/package-info.java rename to spring-boot-project/spring-boot-flyway/src/main/java/org/springframework/boot/flyway/testcontainers/package-info.java index be3e6eb0df..ec7f4ed811 100644 --- a/spring-boot-project/spring-boot-testcontainers-all/src/main/java/org/springframework/boot/testcontainers/service/connection/flyway/package-info.java +++ b/spring-boot-project/spring-boot-flyway/src/main/java/org/springframework/boot/flyway/testcontainers/package-info.java @@ -17,4 +17,4 @@ /** * Support for testcontainers Flyway service connections. */ -package org.springframework.boot.testcontainers.service.connection.flyway; +package org.springframework.boot.flyway.testcontainers; diff --git a/spring-boot-project/spring-boot-flyway/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-flyway/src/main/resources/META-INF/spring.factories index 50efd0a615..6470ab721f 100644 --- a/spring-boot-project/spring-boot-flyway/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-flyway/src/main/resources/META-INF/spring.factories @@ -1,3 +1,7 @@ +# Connection Details Factories +org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactory=\ +org.springframework.boot.flyway.testcontainers.FlywayContainerConnectionDetailsFactory + # Database Initializer Detectors org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector=\ org.springframework.boot.flyway.FlywayDatabaseInitializerDetector,\ diff --git a/spring-boot-project/spring-boot-testcontainers-all/build.gradle b/spring-boot-project/spring-boot-testcontainers-all/build.gradle index 66b0609686..36d3f04e3e 100644 --- a/spring-boot-project/spring-boot-testcontainers-all/build.gradle +++ b/spring-boot-project/spring-boot-testcontainers-all/build.gradle @@ -11,7 +11,6 @@ dependencies { api(project(":spring-boot-project:spring-boot-autoconfigure")) api(project(":spring-boot-project:spring-boot-testcontainers")) - dockerTestImplementation(project(":spring-boot-project:spring-boot-flyway")) dockerTestImplementation(project(":spring-boot-project:spring-boot-jdbc")) dockerTestImplementation(project(":spring-boot-project:spring-boot-kafka")) dockerTestImplementation(project(":spring-boot-project:spring-boot-liquibase")) @@ -43,12 +42,10 @@ dependencies { dockerTestRuntimeOnly("com.oracle.database.r2dbc:oracle-r2dbc") dockerTestRuntimeOnly("com.zaxxer:HikariCP") dockerTestRuntimeOnly("io.lettuce:lettuce-core") - dockerTestRuntimeOnly("org.flywaydb:flyway-database-postgresql") dockerTestRuntimeOnly("org.postgresql:postgresql") optional(project(":spring-boot-project:spring-boot-actuator-autoconfigure-all")) optional(project(":spring-boot-project:spring-boot-data-redis")) - optional(project(":spring-boot-project:spring-boot-flyway")) optional(project(":spring-boot-project:spring-boot-hazelcast")) optional(project(":spring-boot-project:spring-boot-jdbc")) optional(project(":spring-boot-project:spring-boot-kafka")) diff --git a/spring-boot-project/spring-boot-testcontainers-all/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-testcontainers-all/src/main/resources/META-INF/spring.factories index 89d68bab1c..aafb875544 100644 --- a/spring-boot-project/spring-boot-testcontainers-all/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-testcontainers-all/src/main/resources/META-INF/spring.factories @@ -1,6 +1,5 @@ # Connection Details Factories org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactory=\ -org.springframework.boot.testcontainers.service.connection.flyway.FlywayContainerConnectionDetailsFactory,\ org.springframework.boot.testcontainers.service.connection.hazelcast.HazelcastContainerConnectionDetailsFactory,\ org.springframework.boot.testcontainers.service.connection.kafka.ApacheKafkaContainerConnectionDetailsFactory,\ org.springframework.boot.testcontainers.service.connection.kafka.ConfluentKafkaContainerConnectionDetailsFactory,\