From 838a62138f2869a7136bbe00d4407c71b511fefa Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Tue, 11 Jan 2022 13:48:17 -0800 Subject: [PATCH 1/7] Setup CI to test against Java 17 instead of 15. --- .circleci/config.yml | 8 ++++---- gradle/java-publish.gradle | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 48ba552c3e..8a6582207d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -77,11 +77,11 @@ jobs: docker: - image: cimg/openjdk:11.0 <<: *test_nomaven - test_nomaven_15: - # latest JDK, replace with 16 when it comes out + test_nomaven_17: + # latest JDK <<: *env_gradle_large docker: - - image: cimg/openjdk:15.0 + - image: cimg/openjdk:17.0 <<: *test_nomaven test_justmaven_11: << : *env_gradle @@ -275,7 +275,7 @@ workflows: - test_nomaven_11: requires: - assemble_testClasses - - test_nomaven_15: + - test_nomaven_17: requires: - assemble_testClasses - test_npm_8: diff --git a/gradle/java-publish.gradle b/gradle/java-publish.gradle index 62779d8b7d..78e73a351f 100644 --- a/gradle/java-publish.gradle +++ b/gradle/java-publish.gradle @@ -66,7 +66,6 @@ javadoc { options.addStringOption('source', '8') // setup the header options.header javadocInfo - options.footer javadocInfo // setup links options.linksOffline('https://docs.oracle.com/javase/8/docs/api/', "${dotdotGradle}/javadoc/java8") options.linksOffline('https://docs.gradle.org/2.14/javadoc/', "${dotdotGradle}/javadoc/gradle") From ccdca485cb9c41aaab3750bc280589bc5747b085 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Tue, 11 Jan 2022 14:00:13 -0800 Subject: [PATCH 2/7] Fix GradleIntegrationHarness to use the required Gradle version for Java 16 and 17. --- .../spotless/GradleIntegrationHarness.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/GradleIntegrationHarness.java b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/GradleIntegrationHarness.java index 45db3f008e..98b1e1cbf9 100644 --- a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/GradleIntegrationHarness.java +++ b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/GradleIntegrationHarness.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2021 DiffPlug + * Copyright 2016-2022 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,14 +48,26 @@ public enum GradleVersionSupport { final String version; GradleVersionSupport(String version) { - if (Jvm.version() >= 15) { - // the first version with support for Java 15+ + switch (Jvm.version()) { + case 20: + case 19: + case 18: + // TODO: https://docs.gradle.org/current/userguide/compatibility.html + case 17: + this.version = "7.3"; + break; + case 16: + this.version = "7.0"; + break; + case 15: this.version = "6.7"; - } else if (Jvm.version() >= 14) { - // the first version with support for Java 14+ + break; + case 14: this.version = "6.3"; - } else { + break; + default: this.version = version; + break; } } } From 3ad9525d0ac6d1fe7c44b9f88e59b92e56b5ccc9 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Wed, 12 Jan 2022 11:15:47 -0800 Subject: [PATCH 3/7] Fix GJF for for Java 17. --- gradle.properties | 7 ++++++- .../java/com/diffplug/gradle/spotless/WithinBlockTest.java | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index a4f33272ac..fb37c7885f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,10 @@ # To fix metaspace errors -org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 \ + --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.parser=ALL-UNNAMED \ + --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \ + --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED name=spotless description=Spotless - keep your code spotless with Gradle diff --git a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/WithinBlockTest.java b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/WithinBlockTest.java index cc83c3c63d..01fb048b66 100644 --- a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/WithinBlockTest.java +++ b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/WithinBlockTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 DiffPlug + * Copyright 2020-2022 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -53,7 +53,7 @@ void withinBlocksTourDeForce() throws IOException { " custom 'lowercase', { str -> str.toLowerCase() }", " }", " withinBlocks 'java only', '\\n```java\\n', '\\n```\\n', JavaExtension, {", - " googleJavaFormat()", + " googleJavaFormat('1.2')", " }", " }", "}"); From a2bf06ad9cf9783b918c7a7436deafed55cceaab Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 13 Jan 2022 13:02:39 -0800 Subject: [PATCH 4/7] Fix GJF (and detekt) on Java 16+ --- .../spotless/maven/MavenIntegrationHarness.java | 12 ++++++++++++ testlib/build.gradle | 15 ++++++++++++++- .../spotless/java/GoogleJavaFormatStepTest.java | 5 +++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/MavenIntegrationHarness.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/MavenIntegrationHarness.java index d227aa51cf..939940a315 100644 --- a/plugin-maven/src/test/java/com/diffplug/spotless/maven/MavenIntegrationHarness.java +++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/MavenIntegrationHarness.java @@ -41,6 +41,7 @@ import com.diffplug.common.base.Unhandled; import com.diffplug.common.io.Resources; +import com.diffplug.spotless.Jvm; import com.diffplug.spotless.ResourceHarness; public class MavenIntegrationHarness extends ResourceHarness { @@ -81,6 +82,17 @@ public class MavenIntegrationHarness extends ResourceHarness { @BeforeEach void gitAttributes() throws IOException { setFile(".gitattributes").toContent("* text eol=lf"); + if (Jvm.version() >= 16) { + // for GJF https://github.com/diffplug/spotless/issues/834 + setFile(".mvn/jvm.config").toContent( + "--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.parser=ALL-UNNAMED" + + " --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED" + + " --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" + + // this last line is for Detekt + " --add-opens java.base/java.lang=ALL-UNNAMED"); + } // copy the mvnw resources copy("mvnw").setExecutable(true); copy("mvnw.cmd"); diff --git a/testlib/build.gradle b/testlib/build.gradle index edf9196d38..8e0a012882 100644 --- a/testlib/build.gradle +++ b/testlib/build.gradle @@ -21,7 +21,20 @@ dependencies { // we'll hold the testlib to a low standard (prize brevity) spotbugs { reportLevel = 'high' } // low|medium|high (low = sensitive to even minor mistakes) -test { useJUnitPlatform() } +test { + useJUnitPlatform() + if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_16)) { + // for GJF https://github.com/diffplug/spotless/issues/834 + def args = [ + '--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.parser=ALL-UNNAMED', + '--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED', + '--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED' + ] + jvmArgs args + } +} apply from: rootProject.file('gradle/special-tests.gradle') diff --git a/testlib/src/test/java/com/diffplug/spotless/java/GoogleJavaFormatStepTest.java b/testlib/src/test/java/com/diffplug/spotless/java/GoogleJavaFormatStepTest.java index d5860745ef..cf2a90ad79 100644 --- a/testlib/src/test/java/com/diffplug/spotless/java/GoogleJavaFormatStepTest.java +++ b/testlib/src/test/java/com/diffplug/spotless/java/GoogleJavaFormatStepTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2021 DiffPlug + * Copyright 2016-2022 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ import static org.junit.jupiter.api.condition.JRE.JAVA_11; import static org.junit.jupiter.api.condition.JRE.JAVA_13; +import static org.junit.jupiter.api.condition.JRE.JAVA_15; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -41,7 +42,7 @@ void jvm13Features() throws Exception { } @Test - @EnabledForJreRange(min = JAVA_11) // google-java-format requires JRE 11+ + @EnabledForJreRange(min = JAVA_11, max = JAVA_15) // google-java-format requires JRE 11+ void behavior18() throws Exception { FormatterStep step = GoogleJavaFormatStep.create("1.8", TestProvisioner.mavenCentral()); StepHarness.forStep(step) From db7f6d3b39477fc1c16f5568a7ceea73dde43655 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 13 Jan 2022 15:14:28 -0800 Subject: [PATCH 5/7] Update changelog. --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index b905d21ba0..8f2ead71d4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,8 @@ This document is intended for Spotless developers. We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `1.27.0`). ## [Unreleased] +### Changed +* Bump CI from Java 15 to 17. ## [2.22.0] - 2022-01-13 ### Added From 2558bc85da6ed64b824b72f12a0d41b0adb4798a Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 13 Jan 2022 15:17:41 -0800 Subject: [PATCH 6/7] Add link to changelog. --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 8f2ead71d4..fbcf560c51 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,7 +11,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( ## [Unreleased] ### Changed -* Bump CI from Java 15 to 17. +* Bump CI from Java 15 to 17 ([#1094](https://github.com/diffplug/spotless/pull/1094)). ## [2.22.0] - 2022-01-13 ### Added From e578a9d2c9a7117d012a8c6e31c5f27f4d3a1600 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 13 Jan 2022 15:34:04 -0800 Subject: [PATCH 7/7] Fix build on Java 8. --- gradle.properties | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index fb37c7885f..fcad5c5ed4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,5 @@ # To fix metaspace errors -org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 \ - --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.parser=ALL-UNNAMED \ - --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \ - --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED - +org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 name=spotless description=Spotless - keep your code spotless with Gradle org=diffplug