diff --git a/.sdkmanrc b/.sdkmanrc index 4bd3b9b..7512a8b 100644 --- a/.sdkmanrc +++ b/.sdkmanrc @@ -1,3 +1,3 @@ -java=17.0.4-tem -gradle=7.5.1 +java=17.0.8-tem +gradle=8.5 maven=3.8.6 \ No newline at end of file diff --git a/build.gradle b/build.gradle index 2834437..2d62c75 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,8 @@ plugins { id 'java' - id 'org.springframework.boot' version '3.0.5' - id 'io.spring.dependency-management' version '1.1.0' + id 'org.springframework.boot' version '3.2.0' + id 'io.spring.dependency-management' version '1.1.4' + id 'com.diffplug.spotless' version "6.23.0" } group = 'com.testcontainers' @@ -19,7 +20,7 @@ repositories { } ext { - set('testcontainersVersion', "1.18.0") + set('testcontainers.version', "1.19.3") } dependencies { @@ -33,13 +34,7 @@ dependencies { testImplementation 'org.testcontainers:junit-jupiter' testImplementation 'org.testcontainers:kafka' testImplementation 'org.testcontainers:mysql' - testImplementation 'org.awaitility:awaitility:4.2.0' -} - -dependencyManagement { - imports { - mavenBom "org.testcontainers:testcontainers-bom:${testcontainersVersion}" - } + testImplementation 'org.awaitility:awaitility' } tasks.named('test') { @@ -50,3 +45,17 @@ tasks.named('test') { exceptionFormat = "full" } } +spotless { + java { + importOrder() + removeUnusedImports() + prettier(['prettier': '3.0.3', 'prettier-plugin-java': '2.3.0']) + .config([ + 'parser': 'java', + 'tabWidth': 2, + 'printWidth': 80, + 'plugins': ['prettier-plugin-java'] + ]) + formatAnnotations() + } +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e583..d64cd49 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..1af9e09 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb..1aa94a4 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,11 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +131,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index f127cfd..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% diff --git a/guide/testing-spring-boot-kafka-listener-using-testcontainers/index.adoc b/guide/testing-spring-boot-kafka-listener-using-testcontainers/index.adoc index 90e2ad6..7d2a037 100644 --- a/guide/testing-spring-boot-kafka-listener-using-testcontainers/index.adoc +++ b/guide/testing-spring-boot-kafka-listener-using-testcontainers/index.adoc @@ -44,7 +44,7 @@ If you have selected Gradle as the build tool, then the generated build.gradle f [source,groovy,indent=0] ---- -include::{codebase}/build.gradle[lines="25..37"] +include::{codebase}/build.gradle[lines="26..38"] ---- We are going to implement a Kafka Listener listening to a topic named product-price-changes diff --git a/pom.xml b/pom.xml index 741d361..cbcb343 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.springframework.boot spring-boot-starter-parent - 3.0.5 + 3.2.0 com.testcontainers @@ -17,8 +17,7 @@ Testing Spring Boot Kafka Listener using Testcontainers 17 - 1.18.0 - 4.2.0 + 1.19.3 @@ -62,21 +61,9 @@ org.awaitility awaitility - ${awaitility.version} test - - - - org.testcontainers - testcontainers-bom - ${testcontainers.version} - pom - import - - - @@ -85,20 +72,31 @@ spring-boot-maven-plugin - com.hubspot.maven.plugins - prettier-maven-plugin - 0.16 + com.diffplug.spotless + spotless-maven-plugin + 2.41.0 - 1.5.0 - 90 - 2 - false - true - true + + + + + + 3.0.3 + 2.3.0 + + + java + 2 + 80 + prettier-plugin-java + + + + - validate + compile check diff --git a/src/main/java/com/testcontainers/demo/SpringBootKafkaTestcontainersDemoApplication.java b/src/main/java/com/testcontainers/demo/SpringBootKafkaTestcontainersDemoApplication.java index e8182c6..ab09caa 100644 --- a/src/main/java/com/testcontainers/demo/SpringBootKafkaTestcontainersDemoApplication.java +++ b/src/main/java/com/testcontainers/demo/SpringBootKafkaTestcontainersDemoApplication.java @@ -7,6 +7,9 @@ public class SpringBootKafkaTestcontainersDemoApplication { public static void main(String[] args) { - SpringApplication.run(SpringBootKafkaTestcontainersDemoApplication.class, args); + SpringApplication.run( + SpringBootKafkaTestcontainersDemoApplication.class, + args + ); } } diff --git a/src/test/java/com/testcontainers/demo/ProductPriceChangedEventHandlerTest.java b/src/test/java/com/testcontainers/demo/ProductPriceChangedEventHandlerTest.java index cd6b3f8..3b250e7 100644 --- a/src/test/java/com/testcontainers/demo/ProductPriceChangedEventHandlerTest.java +++ b/src/test/java/com/testcontainers/demo/ProductPriceChangedEventHandlerTest.java @@ -65,10 +65,13 @@ void shouldHandleProductPriceChangedEvent() { .pollInterval(Duration.ofSeconds(3)) .atMost(10, SECONDS) .untilAsserted(() -> { - Optional optionalProduct = productRepository.findByCode("P100"); + Optional optionalProduct = productRepository.findByCode( + "P100" + ); assertThat(optionalProduct).isPresent(); assertThat(optionalProduct.get().getCode()).isEqualTo("P100"); - assertThat(optionalProduct.get().getPrice()).isEqualTo(new BigDecimal("14.50")); + assertThat(optionalProduct.get().getPrice()) + .isEqualTo(new BigDecimal("14.50")); }); } }