From 828940e5a1bc51ce1e49410bc1dcf6c4139ea51f Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Wed, 26 Nov 2025 10:38:36 +0000 Subject: [PATCH] Support building with Java 17 Needed to remove ErrorProne and Nullaway compiler plugins Fixes #2136 --- .github/workflows/gradle-build.yml | 2 +- .github/workflows/maven-build.yml | 2 +- .mvn/jvm.config | 10 ------ .sdkmanrc | 3 -- README.md | 2 +- build.gradle | 24 ++----------- pom.xml | 55 ++++++++---------------------- 7 files changed, 20 insertions(+), 78 deletions(-) delete mode 100644 .mvn/jvm.config delete mode 100644 .sdkmanrc diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 3c1830015..c24c121b1 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [ '25' ] + java: [ '17' ] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index 740b1129c..a1ec4dab7 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [ '25' ] + java: [ '17' ] steps: - uses: actions/checkout@v4 diff --git a/.mvn/jvm.config b/.mvn/jvm.config deleted file mode 100644 index 32599cefe..000000000 --- a/.mvn/jvm.config +++ /dev/null @@ -1,10 +0,0 @@ ---add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED ---add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED ---add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED ---add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED diff --git a/.sdkmanrc b/.sdkmanrc deleted file mode 100644 index 2b4236b43..000000000 --- a/.sdkmanrc +++ /dev/null @@ -1,3 +0,0 @@ -# Enable auto-env through the sdkman_auto_env config -# Add key=value pairs of SDKs to use below -java=25-librca diff --git a/README.md b/README.md index e792c0dab..a1c65baff 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ See the presentation here: ## Run Petclinic locally Spring Petclinic is a [Spring Boot](https://spring.io/guides/gs/spring-boot) application built using [Maven](https://spring.io/guides/gs/maven/) or [Gradle](https://spring.io/guides/gs/gradle/). -Java 25 or later is required for the build, but the application can run with Java 17 or newer: +Java 17 or later is required for the build, and the application can run with Java 17 or newer: ```bash git clone https://github.com/spring-projects/spring-petclinic.git diff --git a/build.gradle b/build.gradle index f57b21dc1..046257d29 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,6 @@ plugins { id 'org.cyclonedx.bom' version '3.0.2' id 'io.spring.javaformat' version '0.0.47' id "io.spring.nohttp" version "0.0.11" - id 'net.ltgt.errorprone' version '4.3.0' } gradle.startParameter.excludedTaskNames += [ "checkFormatAot", "checkFormatAotTest" ] @@ -17,7 +16,7 @@ version = '4.0.0-SNAPSHOT' java { toolchain { - languageVersion = JavaLanguageVersion.of(25) + languageVersion = JavaLanguageVersion.of(17) } } @@ -30,14 +29,12 @@ ext.springJavaformatCheckstyleVersion = "0.0.47" ext.webjarsLocatorLiteVersion = "1.1.2" ext.webjarsFontawesomeVersion = "4.7.0" ext.webjarsBootstrapVersion = "5.3.8" -ext.errorProneVersion = "2.42.0" -ext.nullAwayVersion = "0.12.10" dependencies { implementation 'org.springframework.boot:spring-boot-starter-cache' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' - implementation 'org.springframework.boot:spring-boot-starter-webmvc' + implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'javax.cache:cache-api' implementation 'jakarta.xml.bind:jakarta.xml.bind-api' @@ -59,8 +56,6 @@ dependencies { testImplementation 'org.testcontainers:testcontainers-mysql' checkstyle "io.spring.javaformat:spring-javaformat-checkstyle:${springJavaformatCheckstyleVersion}" checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleVersion}" - errorprone "com.google.errorprone:error_prone_core:${errorProneVersion}" - errorprone "com.uber.nullaway:nullaway:${nullAwayVersion}" } tasks.named('test') { @@ -77,21 +72,6 @@ checkstyleNohttp { configFile = file('src/checkstyle/nohttp-checkstyle.xml') } -tasks.withType(JavaCompile).configureEach { - options.release = 17 - options.errorprone { - disableAllChecks = true - } - if (name.equals("compileJava")) { - options.errorprone { - error("NullAway") - option("NullAway:OnlyNullMarked", "true") - option("NullAway:CustomContractAnnotations", "org.springframework.lang.Contract") - option("NullAway:JSpecifyMode", "true") - } - } -} - tasks.named("formatMain").configure { dependsOn("checkstyleMain") } tasks.named("formatMain").configure { dependsOn("checkstyleNohttp") } diff --git a/pom.xml b/pom.xml index d512e01ce..fbf2a8993 100644 --- a/pom.xml +++ b/pom.xml @@ -18,12 +18,11 @@ - 25 - 17 + 17 UTF-8 UTF-8 - 2025-11-22T16:15:42Z + 2024-11-28T14:37:52Z 1.1.2 @@ -31,14 +30,13 @@ 4.7.0 12.1.2 - 2.42.0 0.8.14 0.3.4 1.0.0 3.6.0 0.0.11 - 0.12.10 0.0.47 + @@ -57,7 +55,7 @@ org.springframework.boot - spring-boot-starter-webmvc + spring-boot-starter-web org.springframework.boot @@ -67,6 +65,16 @@ org.springframework.boot spring-boot-starter-thymeleaf + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-restclient + test + @@ -115,9 +123,8 @@ org.springframework.boot spring-boot-devtools - true + test - org.springframework.boot spring-boot-starter-data-jpa-test @@ -284,38 +291,6 @@ false - - org.apache.maven.plugins - maven-compiler-plugin - - - default-compile - compile - - compile - - - - -XDcompilePolicy=simple - --should-stop=ifError=FLOW - -Xplugin:ErrorProne -XepDisableAllChecks -Xep:NullAway:ERROR -XepOpt:NullAway:OnlyNullMarked=true -XepOpt:NullAway:CustomContractAnnotations=org.springframework.lang.Contract -XepOpt:NullAway:JSpecifyMode=true - - - - com.google.errorprone - error_prone_core - ${error-prone.version} - - - com.uber.nullaway - nullaway - ${nullaway.version} - - - - - -