diff --git a/.teamcity/src/main/kotlin/common/JvmCategory.kt b/.teamcity/src/main/kotlin/common/JvmCategory.kt index 345c2c649fa0..00a4e06f4e24 100644 --- a/.teamcity/src/main/kotlin/common/JvmCategory.kt +++ b/.teamcity/src/main/kotlin/common/JvmCategory.kt @@ -24,7 +24,7 @@ enum class JvmCategory( // Oracle doesn't provide zip JDK distribution for Windows anymore, we avoid using it MIN_VERSION_WINDOWS(JvmVendor.openjdk, JvmVersion.java8), MAX_LTS_VERSION(JvmVendor.openjdk, JvmVersion.java17), - MAX_VERSION(JvmVendor.openjdk, JvmVersion.java19), + MAX_VERSION(JvmVendor.oracle, JvmVersion.java20), SANTA_TRACKER_SMOKE_TEST_VERSION(JvmVendor.openjdk, JvmVersion.java17), - EXPERIMENTAL_VERSION(JvmVendor.openjdk, JvmVersion.java19) + EXPERIMENTAL_VERSION(JvmVendor.oracle, JvmVersion.java20) } diff --git a/.teamcity/src/main/kotlin/common/JvmVendor.kt b/.teamcity/src/main/kotlin/common/JvmVendor.kt index b2e97b455ff9..692acca8e40f 100644 --- a/.teamcity/src/main/kotlin/common/JvmVendor.kt +++ b/.teamcity/src/main/kotlin/common/JvmVendor.kt @@ -18,6 +18,6 @@ package common enum class JvmVendor(val displayName: String) { oracle("Oracle"), - openjdk("Openjdk"), + openjdk("Adoptium"), zulu("Zulu") } diff --git a/.teamcity/src/main/kotlin/common/JvmVersion.kt b/.teamcity/src/main/kotlin/common/JvmVersion.kt index 7ac2c9525710..2ea59b7d9893 100644 --- a/.teamcity/src/main/kotlin/common/JvmVersion.kt +++ b/.teamcity/src/main/kotlin/common/JvmVersion.kt @@ -20,5 +20,5 @@ enum class JvmVersion(val major: Int) { java8(8), java11(11), java17(17), - java19(19) + java20(20) } diff --git a/.teamcity/src/test/kotlin/ApplyDefaultConfigurationTest.kt b/.teamcity/src/test/kotlin/ApplyDefaultConfigurationTest.kt index 5d28361754a2..62529fd765dd 100644 --- a/.teamcity/src/test/kotlin/ApplyDefaultConfigurationTest.kt +++ b/.teamcity/src/test/kotlin/ApplyDefaultConfigurationTest.kt @@ -141,8 +141,8 @@ class ApplyDefaultConfigurationTest { private fun expectedRunnerParam(daemon: String = "--daemon", extraParameters: String = "", os: Os = Os.LINUX): String { - val linuxPaths = "-Porg.gradle.java.installations.paths=%linux.java8.oracle.64bit%,%linux.java11.openjdk.64bit%,%linux.java17.openjdk.64bit%,%linux.java19.openjdk.64bit%,%linux.java8.openjdk.64bit%" - val windowsPaths = "-Porg.gradle.java.installations.paths=%windows.java8.oracle.64bit%,%windows.java11.openjdk.64bit%,%windows.java17.openjdk.64bit%,%windows.java19.openjdk.64bit%,%windows.java8.openjdk.64bit%" + val linuxPaths = "-Porg.gradle.java.installations.paths=%linux.java8.oracle.64bit%,%linux.java11.openjdk.64bit%,%linux.java17.openjdk.64bit%,%linux.java20.openjdk.64bit%,%linux.java8.openjdk.64bit%" + val windowsPaths = "-Porg.gradle.java.installations.paths=%windows.java8.oracle.64bit%,%windows.java11.openjdk.64bit%,%windows.java17.openjdk.64bit%,%windows.java20.openjdk.64bit%,%windows.java8.openjdk.64bit%" val expectedInstallationPaths = if (os == Os.WINDOWS) windowsPaths else linuxPaths return "-Dorg.gradle.workers.max=%maxParallelForks% -PmaxParallelForks=%maxParallelForks% $pluginPortalUrlOverride -s --no-configuration-cache %additional.gradle.parameters% $daemon --continue $extraParameters \"-Dscan.tag.Check\" \"-Dscan.tag.\" -PteamCityBuildId=%teamcity.build.id% \"$expectedInstallationPaths\" -Porg.gradle.java.installations.auto-download=false" } diff --git a/.teamcity/src/test/kotlin/PerformanceTestBuildTypeTest.kt b/.teamcity/src/test/kotlin/PerformanceTestBuildTypeTest.kt index 4eeb6b070efe..5c71708aca14 100644 --- a/.teamcity/src/test/kotlin/PerformanceTestBuildTypeTest.kt +++ b/.teamcity/src/test/kotlin/PerformanceTestBuildTypeTest.kt @@ -91,7 +91,7 @@ class PerformanceTestBuildTypeTest { "-PautoDownloadAndroidStudio=true", "-PrunAndroidStudioInHeadlessMode=true", "-Porg.gradle.java.installations.auto-download=false", - "\"-Porg.gradle.java.installations.paths=%linux.java8.oracle.64bit%,%linux.java11.openjdk.64bit%,%linux.java17.openjdk.64bit%,%linux.java19.openjdk.64bit%,%linux.java8.openjdk.64bit%\"", + "\"-Porg.gradle.java.installations.paths=%linux.java8.oracle.64bit%,%linux.java11.openjdk.64bit%,%linux.java17.openjdk.64bit%,%linux.java20.openjdk.64bit%,%linux.java8.openjdk.64bit%\"", "\"-Porg.gradle.performance.branchName=%teamcity.build.branch%\"", "\"-Porg.gradle.performance.db.url=%performance.db.url%\"", "\"-Porg.gradle.performance.db.username=%performance.db.username%\"", diff --git a/subprojects/build-init/src/integTest/groovy/org/gradle/buildinit/plugins/MavenConversionDynamicPomIntegrationTest.groovy b/subprojects/build-init/src/integTest/groovy/org/gradle/buildinit/plugins/MavenConversionDynamicPomIntegrationTest.groovy new file mode 100644 index 000000000000..a0e68bb5834c --- /dev/null +++ b/subprojects/build-init/src/integTest/groovy/org/gradle/buildinit/plugins/MavenConversionDynamicPomIntegrationTest.groovy @@ -0,0 +1,219 @@ +/* + * Copyright 2012 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.gradle.buildinit.plugins + +import org.gradle.api.JavaVersion +import org.gradle.buildinit.plugins.internal.modifiers.BuildInitDsl +import org.gradle.internal.jvm.Jvm +import org.gradle.test.precondition.Requires +import org.gradle.test.preconditions.UnitTestPreconditions + +/** + * MavenConversionIntegrationTest tests that use a dynamically-generated POM to ensure cross-version compatibility. + */ +abstract class MavenConversionDynamicPomIntegrationTest extends AbstractInitIntegrationSpec { + + @Override + String subprojectName() { null } + + abstract BuildInitDsl getScriptDsl() + + def setup() { + /** + * We need to configure the local maven repository explicitly as + * RepositorySystem.defaultUserLocalRepository is statically initialised and used when + * creating multiple ProjectBuildingRequest. + * */ + m2.generateUserSettingsFile(m2.mavenRepo()) + using m2 + + targetDir.file("src/main/java/Foo.java") << """ + import org.apache.commons.lang.StringUtils; + + public class Foo { + public String toString() { + return StringUtils.normalizeSpace("hi there!"); + } + } + """ + targetDir.file("src/test/java/FooTest.java") << """ + import org.junit.Test; + + public class FooTest { + @Test public void test() { + assert false: "test failure"; + } + } + """ + } + + def "singleModule with same source and target"() { + def source = Jvm.current().javaVersion + def target = Jvm.current().javaVersion + writePom(source, target) + + def dsl = dslFixtureFor(scriptDsl) + + when: + run 'init', '--dsl', scriptDsl.id as String + + then: + dsl.assertGradleFilesGenerated() + dsl.getSettingsFile().text.contains("rootProject.name = 'util'") || dsl.getSettingsFile().text.contains('rootProject.name = "util"') + MavenConversionIntegrationTest.assertContainsPublishingConfig(dsl.getBuildFile(), scriptDsl) + dsl.getBuildFile(targetDir).text.contains("java.sourceCompatibility = JavaVersion.${source.name()}") + !dsl.getBuildFile(targetDir).text.contains("java.targetCompatibility = ") + + when: + fails 'clean', 'build' + + then: + // when tests fail, jar may not exist + failure.assertHasDescription("Execution failed for task ':test'.") + failure.assertHasCause("There were failing tests.") + } + + def "singleModule with different source and target"() { + def source = Jvm.current().javaVersion.previous() as JavaVersion + def target = Jvm.current().javaVersion + writePom(source, target) + + def dsl = dslFixtureFor(scriptDsl) + + when: + run 'init', '--dsl', scriptDsl.id as String + + then: + dsl.assertGradleFilesGenerated() + dsl.getSettingsFile().text.contains("rootProject.name = 'util'") || dsl.getSettingsFile().text.contains('rootProject.name = "util"') + MavenConversionIntegrationTest.assertContainsPublishingConfig(dsl.getBuildFile(), scriptDsl) + dsl.getBuildFile(targetDir).text.contains("java.sourceCompatibility = JavaVersion.${source.name()}") + dsl.getBuildFile(targetDir).text.contains("java.targetCompatibility = JavaVersion.${target.name()}") + + when: + fails 'clean', 'build' + + then: + // when tests fail, jar may not exist + failure.assertHasDescription("Execution failed for task ':test'.") + failure.assertHasCause("There were failing tests.") + } + + @Requires(UnitTestPreconditions.Jdk9OrLater) + def "singleModule with just source"() { + def source = Jvm.current().javaVersion + writePom(source, null) + + def dsl = dslFixtureFor(scriptDsl) + + when: + run 'init', '--dsl', scriptDsl.id as String + + then: + dsl.assertGradleFilesGenerated() + dsl.getSettingsFile().text.contains("rootProject.name = 'util'") || dsl.getSettingsFile().text.contains('rootProject.name = "util"') + MavenConversionIntegrationTest.assertContainsPublishingConfig(dsl.getBuildFile(), scriptDsl) + dsl.getBuildFile(targetDir).text.contains("java.sourceCompatibility = JavaVersion.${source.name()}") + // target defaults to 1.8 + dsl.getBuildFile(targetDir).text.contains("java.targetCompatibility = JavaVersion.VERSION_1_8") + + when: + fails 'clean', 'build' + + then: + // if the source and target are different, we can't actually compile because javac requires them to be the same + failure.assertHasDescription("Execution failed for task ':compileJava'.") + // May or may not be part of the failure cause (varies by javac version) + errorOutput.contains("source release ${source} requires target release ${source}") + } + + @Requires(UnitTestPreconditions.Jdk9OrLater) + def "singleModule with just target"() { + def target = Jvm.current().javaVersion + writePom(null, target) + + def dsl = dslFixtureFor(scriptDsl) + + when: + run 'init', '--dsl', scriptDsl.id as String + + then: + dsl.assertGradleFilesGenerated() + dsl.getSettingsFile().text.contains("rootProject.name = 'util'") || dsl.getSettingsFile().text.contains('rootProject.name = "util"') + MavenConversionIntegrationTest.assertContainsPublishingConfig(dsl.getBuildFile(), scriptDsl) + // source defaults to 1.8 + dsl.getBuildFile(targetDir).text.contains("java.sourceCompatibility = JavaVersion.VERSION_1_8") + dsl.getBuildFile(targetDir).text.contains("java.targetCompatibility = JavaVersion.${target.name()}") + + when: + fails 'clean', 'build' + + then: + // when tests fail, jar may not exist + failure.assertHasDescription("Execution failed for task ':test'.") + failure.assertHasCause("There were failing tests.") + } + + private writePom(source, target) { + // Dynamically generated POM file, based on MavenConversionIntegrationTest#singleModule pom.xml + targetDir.file("pom.xml") << """ + + 4.0.0 + + util + util + 2.5 + jar + + + + commons-lang + commons-lang + 2.6 + + + junit + junit + 4.13.1 + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${source == null ? "" : "${source}"} + ${target == null ? "" : "${target}"} + + + + + + """ + } +} + +class KotlinDslMavenConversionDynamicPomIntegrationTest extends MavenConversionDynamicPomIntegrationTest { + BuildInitDsl scriptDsl = BuildInitDsl.KOTLIN +} + +class GroovyDslMavenConversionDynamicPomIntegrationTest extends MavenConversionDynamicPomIntegrationTest { + BuildInitDsl scriptDsl = BuildInitDsl.GROOVY +} diff --git a/subprojects/build-init/src/integTest/groovy/org/gradle/buildinit/plugins/MavenConversionIntegrationTest.groovy b/subprojects/build-init/src/integTest/groovy/org/gradle/buildinit/plugins/MavenConversionIntegrationTest.groovy index 9d3f625c3d25..4fe9c8989732 100644 --- a/subprojects/build-init/src/integTest/groovy/org/gradle/buildinit/plugins/MavenConversionIntegrationTest.groovy +++ b/subprojects/build-init/src/integTest/groovy/org/gradle/buildinit/plugins/MavenConversionIntegrationTest.groovy @@ -287,7 +287,7 @@ tasks.withType() { } } - private static void assertContainsPublishingConfig(TestFile buildScript, BuildInitDsl dsl, String indent = "", List additionalArchiveTasks = []) { + static void assertContainsPublishingConfig(TestFile buildScript, BuildInitDsl dsl, String indent = "", List additionalArchiveTasks = []) { def text = buildScript.text if (dsl == BuildInitDsl.GROOVY) { assert text.contains("id 'maven-publish'") diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/emptySource/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/emptySource/some-thing/pom.xml index 725dea469840..2651837a87b6 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/emptySource/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/emptySource/some-thing/pom.xml @@ -12,7 +12,6 @@ maven-compiler-plugin - 1.7 diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/emptyTarget/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/emptyTarget/some-thing/pom.xml index 165f95bc9326..12185c0aff06 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/emptyTarget/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/emptyTarget/some-thing/pom.xml @@ -11,7 +11,6 @@ org.apache.maven.plugins maven-compiler-plugin - 1.7 diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/enforcerplugin/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/enforcerplugin/some-thing/pom.xml index 82ce123ea4d9..86e35917a0c1 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/enforcerplugin/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/enforcerplugin/some-thing/pom.xml @@ -41,10 +41,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/expandProperties/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/expandProperties/some-thing/pom.xml index 0f46599ee7f2..2bfa685230a6 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/expandProperties/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/expandProperties/some-thing/pom.xml @@ -30,10 +30,6 @@ org.apache.maven.plugins maven-compiler-plugin ${compiler-version} - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/flatmultimodule/some-thing/webinar-parent/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/flatmultimodule/some-thing/webinar-parent/pom.xml index 3b059f3660bf..a81aa4e3aa35 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/flatmultimodule/some-thing/webinar-parent/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/flatmultimodule/some-thing/webinar-parent/pom.xml @@ -33,10 +33,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolAllow/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolAllow/some-thing/pom.xml index b522079b3ac7..b02c108e94aa 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolAllow/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolAllow/some-thing/pom.xml @@ -44,10 +44,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolDefaultHandling/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolDefaultHandling/some-thing/pom.xml index b522079b3ac7..b02c108e94aa 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolDefaultHandling/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolDefaultHandling/some-thing/pom.xml @@ -44,10 +44,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolFail/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolFail/some-thing/pom.xml index b522079b3ac7..b02c108e94aa 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolFail/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolFail/some-thing/pom.xml @@ -44,10 +44,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolUpgrade/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolUpgrade/some-thing/pom.xml index b522079b3ac7..b02c108e94aa 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolUpgrade/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolUpgrade/some-thing/pom.xml @@ -44,10 +44,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolWarn/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolWarn/some-thing/pom.xml index b522079b3ac7..b02c108e94aa 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolWarn/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/insecureProtocolWarn/some-thing/pom.xml @@ -44,10 +44,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModule/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModule/some-thing/pom.xml index e7daab1e756a..1149d2da4b96 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModule/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModule/some-thing/pom.xml @@ -33,10 +33,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - org.apache.maven.plugins diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleNoBackReferences/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleNoBackReferences/some-thing/pom.xml index e7daab1e756a..1149d2da4b96 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleNoBackReferences/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleNoBackReferences/some-thing/pom.xml @@ -33,10 +33,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - org.apache.maven.plugins diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleWithNestedParent/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleWithNestedParent/some-thing/pom.xml index 2f0c48830561..52a0d911cdc0 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleWithNestedParent/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleWithNestedParent/some-thing/pom.xml @@ -25,10 +25,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleWithRemoteParent/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleWithRemoteParent/some-thing/pom.xml index 4106940c052e..2df695e8186d 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleWithRemoteParent/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/multiModuleWithRemoteParent/some-thing/pom.xml @@ -47,10 +47,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/remoteparent/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/remoteparent/some-thing/pom.xml index ea72edb34d1c..a2ce4e6e483d 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/remoteparent/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/remoteparent/some-thing/pom.xml @@ -23,10 +23,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/singleModule/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/singleModule/some-thing/pom.xml index 069d16d99287..bf9c7ae63f4d 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/singleModule/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/singleModule/some-thing/pom.xml @@ -25,10 +25,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/testsJar/some-thing/pom.xml b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/testsJar/some-thing/pom.xml index 3b036bfe13be..019e27def343 100644 --- a/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/testsJar/some-thing/pom.xml +++ b/subprojects/build-init/src/integTest/resources/org/gradle/buildinit/plugins/MavenConversionIntegrationTest/testsJar/some-thing/pom.xml @@ -36,10 +36,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.7 - 1.7 - diff --git a/subprojects/build-init/src/main/resources/org/gradle/buildinit/tasks/templates/library-versions.properties b/subprojects/build-init/src/main/resources/org/gradle/buildinit/tasks/templates/library-versions.properties index 5853ab3c1670..6832f11a24e5 100644 --- a/subprojects/build-init/src/main/resources/org/gradle/buildinit/tasks/templates/library-versions.properties +++ b/subprojects/build-init/src/main/resources/org/gradle/buildinit/tasks/templates/library-versions.properties @@ -1,16 +1,16 @@ #Generated file, please do not edit - Version values used in build-init templates commons-math=3.6.1 commons-text=1.10.0 -groovy=3.0.17 -guava=31.1-jre -junit-jupiter=5.9.2 +groovy=3.0.18 +guava=32.1.1-jre +junit-jupiter=5.9.3 junit=4.13.2 kotlin=1.9.0 -scala-library=2.13.10 +scala-library=2.13.11 scala-xml=1.2.0 scala=2.13 -scalatest=3.2.15 +scalatest=3.2.16 scalatestplus-junit=3.2.2.0 slf4j=2.0.7 spock=2.2-groovy-3.0 -testng=7.5 +testng=7.5.1 diff --git a/subprojects/core/src/integTest/groovy/org/gradle/JansiEndUserIntegrationTest.groovy b/subprojects/core/src/integTest/groovy/org/gradle/JansiEndUserIntegrationTest.groovy index a08109100e44..0a2e4c578fb1 100644 --- a/subprojects/core/src/integTest/groovy/org/gradle/JansiEndUserIntegrationTest.groovy +++ b/subprojects/core/src/integTest/groovy/org/gradle/JansiEndUserIntegrationTest.groovy @@ -17,12 +17,14 @@ package org.gradle import org.gradle.integtests.fixtures.AbstractIntegrationSpec +import org.gradle.integtests.fixtures.AvailableJavaHomes +import org.gradle.integtests.fixtures.jvm.JavaToolchainFixture import spock.lang.Ignore import spock.lang.Issue import static org.gradle.internal.nativeintegration.jansi.JansiBootPathConfigurer.JANSI_LIBRARY_PATH_SYS_PROP -class JansiEndUserIntegrationTest extends AbstractIntegrationSpec { +class JansiEndUserIntegrationTest extends AbstractIntegrationSpec implements JavaToolchainFixture { private final static String JANSI_VERSION = '1.11' @@ -87,7 +89,7 @@ class JansiEndUserIntegrationTest extends AbstractIntegrationSpec { public class MyClass {} """ - succeeds 'compileJava' + withInstallations(AvailableJavaHomes.jdk11).succeeds 'compileJava' then: outputContains('Hello World') @@ -97,7 +99,10 @@ class JansiEndUserIntegrationTest extends AbstractIntegrationSpec { when: AnnotationProcessorPublisher annotationProcessorPublisher = new AnnotationProcessorPublisher() annotationProcessorPublisher.writeSourceFiles() - inDirectory(annotationProcessorPublisher.projectDir).withTasks('publish').run() + withInstallations(AvailableJavaHomes.jdk11) + .inDirectory(annotationProcessorPublisher.projectDir) + .withTasks('publish') + .run() then: annotationProcessorPublisher.publishedJarFile.isFile() @@ -123,7 +128,7 @@ class JansiEndUserIntegrationTest extends AbstractIntegrationSpec { class MyClass {} """ - succeeds 'compileGroovy' + withInstallations(AvailableJavaHomes.jdk11).succeeds 'compileGroovy' then: outputContains('Hello World') @@ -139,6 +144,7 @@ class JansiEndUserIntegrationTest extends AbstractIntegrationSpec { static String annotationProcessorDependency(File repoDir, String processorDependency) { """ + java.toolchain.languageVersion = JavaLanguageVersion.of(11) java.sourceCompatibility = '1.7' repositories { @@ -200,6 +206,7 @@ class JansiEndUserIntegrationTest extends AbstractIntegrationSpec { group = '$group' version = '$version' + java.toolchain.languageVersion = JavaLanguageVersion.of(11) java.sourceCompatibility = '1.7' dependencies { diff --git a/subprojects/internal-instrumentation-processor/src/test/groovy/org/gradle/internal/instrumentation/InstrumentationCodeGenTest.groovy b/subprojects/internal-instrumentation-processor/src/test/groovy/org/gradle/internal/instrumentation/InstrumentationCodeGenTest.groovy index ec3f71136c71..8f1d669581a8 100644 --- a/subprojects/internal-instrumentation-processor/src/test/groovy/org/gradle/internal/instrumentation/InstrumentationCodeGenTest.groovy +++ b/subprojects/internal-instrumentation-processor/src/test/groovy/org/gradle/internal/instrumentation/InstrumentationCodeGenTest.groovy @@ -26,6 +26,7 @@ import spock.lang.Specification import javax.tools.JavaFileObject import static com.google.testing.compile.Compiler.javac +import static org.junit.Assume.assumeTrue abstract class InstrumentationCodeGenTest extends Specification { @@ -49,6 +50,7 @@ abstract class InstrumentationCodeGenTest extends Specification { } private static com.google.testing.compile.Compiler getCompiler() { + assumeTrue("Java 20+ do not support --release=8", Jvm.current().javaVersion < JavaVersion.VERSION_20) if (Jvm.current().javaVersion.isCompatibleWith(JavaVersion.VERSION_1_9)) { return javac().withOptions("--release=8") } diff --git a/subprojects/internal-integ-testing/src/main/groovy/org/gradle/integtests/fixtures/executer/DefaultGradleDistribution.groovy b/subprojects/internal-integ-testing/src/main/groovy/org/gradle/integtests/fixtures/executer/DefaultGradleDistribution.groovy index 178c5ae66361..ab2b338a0e15 100644 --- a/subprojects/internal-integ-testing/src/main/groovy/org/gradle/integtests/fixtures/executer/DefaultGradleDistribution.groovy +++ b/subprojects/internal-integ-testing/src/main/groovy/org/gradle/integtests/fixtures/executer/DefaultGradleDistribution.groovy @@ -142,7 +142,12 @@ class DefaultGradleDistribution implements GradleDistribution { return javaVersion >= JavaVersion.VERSION_1_8 && javaVersion <= JavaVersion.VERSION_18 } - return javaVersion >= JavaVersion.VERSION_1_8 && maybeEnforceHighestVersion(javaVersion, JavaVersion.VERSION_19) + // 8.3 added JDK 20 support + if (isSameOrOlder("8.2.1")) { + return javaVersion >= JavaVersion.VERSION_1_8 && javaVersion <= JavaVersion.VERSION_19 + } + + return javaVersion >= JavaVersion.VERSION_1_8 && maybeEnforceHighestVersion(javaVersion, JavaVersion.VERSION_20) } @Override diff --git a/subprojects/internal-testing/src/main/resources/valid-precondition-combinations.csv b/subprojects/internal-testing/src/main/resources/valid-precondition-combinations.csv index c2c52302e3f6..d527a92d8b2c 100644 --- a/subprojects/internal-testing/src/main/resources/valid-precondition-combinations.csv +++ b/subprojects/internal-testing/src/main/resources/valid-precondition-combinations.csv @@ -18,6 +18,7 @@ UnitTestPreconditions$HighPerformance UnitTestPreconditions$Jdk10OrEarlier UnitTestPreconditions$Jdk11OrEarlier UnitTestPreconditions$Jdk11OrLater +UnitTestPreconditions$Jdk12OrLater UnitTestPreconditions$Jdk14OrLater UnitTestPreconditions$Jdk14OrLater,IntegTestPreconditions$NotEmbeddedExecutor UnitTestPreconditions$Jdk15OrEarlier diff --git a/subprojects/language-java/src/integTest/groovy/org/gradle/java/compile/incremental/BaseIncrementalCompilationAfterFailureIntegrationTest.groovy b/subprojects/language-java/src/integTest/groovy/org/gradle/java/compile/incremental/BaseIncrementalCompilationAfterFailureIntegrationTest.groovy index 3b1e203f3c77..51cd7ecf2b93 100644 --- a/subprojects/language-java/src/integTest/groovy/org/gradle/java/compile/incremental/BaseIncrementalCompilationAfterFailureIntegrationTest.groovy +++ b/subprojects/language-java/src/integTest/groovy/org/gradle/java/compile/incremental/BaseIncrementalCompilationAfterFailureIntegrationTest.groovy @@ -444,7 +444,7 @@ class GroovyIncrementalCompilationAfterFailureIntegrationTest extends BaseIncrem } ${mavenCentralRepository()} dependencies { - testImplementation 'org.codehaus.groovy:groovy:3.0.13' + testImplementation 'org.codehaus.groovy:groovy:3.0.18' testImplementation 'org.spockframework:spock-core:2.1-groovy-3.0' } tasks.withType(GroovyCompile) { diff --git a/subprojects/plugins/src/integTest/groovy/org/gradle/java/compile/AbstractIncrementalCompileIntegrationTest.groovy b/subprojects/plugins/src/integTest/groovy/org/gradle/java/compile/AbstractIncrementalCompileIntegrationTest.groovy index c62992d3e3b0..3069bc172d09 100644 --- a/subprojects/plugins/src/integTest/groovy/org/gradle/java/compile/AbstractIncrementalCompileIntegrationTest.groovy +++ b/subprojects/plugins/src/integTest/groovy/org/gradle/java/compile/AbstractIncrementalCompileIntegrationTest.groovy @@ -19,6 +19,7 @@ package org.gradle.java.compile import org.gradle.integtests.fixtures.AbstractIntegrationSpec import org.gradle.integtests.fixtures.CompiledLanguage import org.gradle.integtests.fixtures.FeaturePreviewsFixture +import org.gradle.internal.jvm.Jvm abstract class AbstractIncrementalCompileIntegrationTest extends AbstractIntegrationSpec implements IncrementalCompileMultiProjectTestFixture { abstract CompiledLanguage getLanguage() @@ -34,7 +35,7 @@ abstract class AbstractIncrementalCompileIntegrationTest extends AbstractIntegra file("src/main/${language.name}/Test.${language.name}") << 'public class Test{}' buildFile << """ apply plugin: '${language.name}' - java.sourceCompatibility = '1.7' + java.sourceCompatibility = '${Jvm.current().javaVersion.previous()}' ${language.compileTaskName}.options.debug = true ${language.compileTaskName}.options.incremental = true ${language.projectGroovyDependencies()} @@ -47,7 +48,7 @@ abstract class AbstractIncrementalCompileIntegrationTest extends AbstractIntegra executedAndNotSkipped ":${language.compileTaskName}" when: - buildFile << 'java.sourceCompatibility = 1.8\n' + buildFile << "java.sourceCompatibility = '${Jvm.current().javaVersion}'\n" succeeds ":${language.compileTaskName}" then: diff --git a/subprojects/plugins/src/integTest/groovy/org/gradle/java/compile/BasicJavaCompilerIntegrationSpec.groovy b/subprojects/plugins/src/integTest/groovy/org/gradle/java/compile/BasicJavaCompilerIntegrationSpec.groovy index 9722ae39e08a..d4a1beb1aaa4 100644 --- a/subprojects/plugins/src/integTest/groovy/org/gradle/java/compile/BasicJavaCompilerIntegrationSpec.groovy +++ b/subprojects/plugins/src/integTest/groovy/org/gradle/java/compile/BasicJavaCompilerIntegrationSpec.groovy @@ -218,7 +218,7 @@ compileJava { """ } - @Requires(UnitTestPreconditions.Jdk9OrLater) + @Requires(UnitTestPreconditions.Jdk11OrLater) def "compile with release flag using #notation notation"() { given: goodCode() @@ -234,34 +234,34 @@ compileJava { def compileClasspathTarget = targetVersionOf(configurations.compileClasspath) def runtimeClasspathTarget = targetVersionOf(configurations.runtimeClasspath) doFirst { - assert apiElementsTarget.get() == 8 - assert runtimeElementsTarget.get() == 8 - assert compileClasspathTarget.get() == 8 - assert runtimeClasspathTarget.get() == 8 + assert apiElementsTarget.get() == 11 + assert runtimeElementsTarget.get() == 11 + assert compileClasspathTarget.get() == 11 + assert runtimeClasspathTarget.get() == 11 } } """ expect: succeeds 'compileJava' - bytecodeVersion() == 52 + bytecodeVersion() == 55 where: notation << [ - "'8'", - '8', // Integer, see #13351 - '"${8}"' // GString, see #13351 + "'11'", + '11', // Integer, see #13351 + '"${11}"' // GString, see #13351 ] } - @Requires(UnitTestPreconditions.Jdk9OrLater) + @Requires(UnitTestPreconditions.Jdk11OrLater) def "compile with release property set"() { given: goodCode() buildFile << """ java.targetCompatibility = JavaVersion.VERSION_1_7 // ignored compileJava.targetCompatibility = '10' // ignored -compileJava.options.release.set(8) +compileJava.options.release.set(11) compileJava { def targetVersionOf = { config -> provider { config.attributes.getAttribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE) } @@ -271,17 +271,17 @@ compileJava { def compileClasspathTarget = targetVersionOf(configurations.compileClasspath) def runtimeClasspathTarget = targetVersionOf(configurations.runtimeClasspath) doFirst { - assert apiElementsTarget.get() == 8 - assert runtimeElementsTarget.get() == 8 - assert compileClasspathTarget.get() == 8 - assert runtimeClasspathTarget.get() == 8 + assert apiElementsTarget.get() == 11 + assert runtimeElementsTarget.get() == 11 + assert compileClasspathTarget.get() == 11 + assert runtimeClasspathTarget.get() == 11 } } """ expect: succeeds 'compileJava' - bytecodeVersion() == 52 + bytecodeVersion() == 55 } @Requires(UnitTestPreconditions.Jdk9OrLater) @@ -298,14 +298,14 @@ compileJava.options.release.set(8) failureHasCause('Cannot specify --release via `CompileOptions.compilerArgs` when using `JavaCompile.release`.') } - @Requires(UnitTestPreconditions.Jdk9OrLater) + @Requires(UnitTestPreconditions.Jdk11OrLater) def "compile with release property and autoTargetJvmDisabled"() { given: goodCode() buildFile << """ java.targetCompatibility = JavaVersion.VERSION_1_7 // ignored compileJava.targetCompatibility = '10' // ignored -compileJava.options.release.set(8) +compileJava.options.release.set(11) java.disableAutoTargetJvm() compileJava { def apiElementsAttributes = configurations.apiElements.attributes @@ -313,8 +313,8 @@ compileJava { def compileClasspathAttributes = configurations.compileClasspath.attributes def runtimeClasspathAttributes = configurations.runtimeClasspath.attributes doFirst { - assert apiElementsAttributes.getAttribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE) == 8 - assert runtimeElementsAttributes.getAttribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE) == 8 + assert apiElementsAttributes.getAttribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE) == 11 + assert runtimeElementsAttributes.getAttribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE) == 11 assert compileClasspathAttributes.getAttribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE) == Integer.MAX_VALUE assert runtimeClasspathAttributes.getAttribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE) == Integer.MAX_VALUE } @@ -323,7 +323,7 @@ compileJava { expect: succeeds 'compileJava' - bytecodeVersion() == 52 + bytecodeVersion() == 55 } def "compile with target compatibility"() { @@ -385,58 +385,58 @@ compileJava { bytecodeVersion() == 52 } - @Requires(UnitTestPreconditions.Jdk9OrLater) + @Requires(UnitTestPreconditions.Jdk12OrLater) def "compile fails when using newer API with release option"() { given: - file("src/main/java/compile/test/FailsOnJava8.java") << ''' + file("src/main/java/compile/test/FailsOnJava11.java") << ''' package compile.test; import java.util.stream.Stream; import java.util.function.Predicate; -public class FailsOnJava8 { - public Stream takeFromStream(Stream stream) { - return stream.takeWhile(Predicate.isEqual("foo")); +public class FailsOnJava11 { + static { + System.out.println("Hello, world!".describeConstable()); } } ''' buildFile << """ -compileJava.options.compilerArgs.addAll(['--release', '8']) +compileJava.options.compilerArgs.addAll(['--release', '11']) """ expect: fails 'compileJava' output.contains(logStatement()) failure.assertHasErrorOutput("cannot find symbol") - failure.assertHasErrorOutput("method takeWhile") + failure.assertHasErrorOutput("method describeConstable") } - @Requires(UnitTestPreconditions.Jdk9OrLater) + @Requires(UnitTestPreconditions.Jdk12OrLater) def "compile fails when using newer API with release property"() { given: - file("src/main/java/compile/test/FailsOnJava8.java") << ''' + file("src/main/java/compile/test/FailsOnJava11.java") << ''' package compile.test; import java.util.stream.Stream; import java.util.function.Predicate; -public class FailsOnJava8 { - public Stream takeFromStream(Stream stream) { - return stream.takeWhile(Predicate.isEqual("foo")); +public class FailsOnJava11 { + static { + System.out.println("Hello, world!".describeConstable()); } } ''' buildFile << """ -compileJava.options.release.set(8) +compileJava.options.release.set(11) """ expect: fails 'compileJava' output.contains(logStatement()) failure.assertHasErrorOutput("cannot find symbol") - failure.assertHasErrorOutput("method takeWhile") + failure.assertHasErrorOutput("method describeConstable") } def buildScript() { @@ -543,7 +543,9 @@ class Main { def writeAnnotationProcessorProject() { file("processor").create { - file("build.gradle") << "apply plugin: 'java'" + file("build.gradle") << """ + apply plugin: 'java' + """ "src/main" { file("resources/META-INF/services/javax.annotation.processing.Processor") << "com.test.SimpleAnnotationProcessor" "java/com/test/" { diff --git a/subprojects/scala/src/integTest/groovy/org/gradle/integtests/ScalaAnnotationProcessingIntegrationTest.groovy b/subprojects/scala/src/integTest/groovy/org/gradle/integtests/ScalaAnnotationProcessingIntegrationTest.groovy index ae343695e628..d95d1f8dcde1 100644 --- a/subprojects/scala/src/integTest/groovy/org/gradle/integtests/ScalaAnnotationProcessingIntegrationTest.groovy +++ b/subprojects/scala/src/integTest/groovy/org/gradle/integtests/ScalaAnnotationProcessingIntegrationTest.groovy @@ -181,8 +181,6 @@ class ScalaAnnotationProcessingIntegrationTest extends AbstractIntegrationSpec { static String annotationProcessorDependency(File repoDir, String processorDependency) { """ - java.sourceCompatibility = '1.7' - repositories { maven { url '${repoDir.toURI()}' @@ -266,7 +264,6 @@ class ScalaAnnotationProcessingIntegrationTest extends AbstractIntegrationSpec { group = '$group' version = '$version' - java.sourceCompatibility = '1.7' publishing { publications { diff --git a/subprojects/scala/src/integTest/groovy/org/gradle/integtests/fixtures/ScalaCoverage.groovy b/subprojects/scala/src/integTest/groovy/org/gradle/integtests/fixtures/ScalaCoverage.groovy index f78af3536842..d82bc51a0fb6 100644 --- a/subprojects/scala/src/integTest/groovy/org/gradle/integtests/fixtures/ScalaCoverage.groovy +++ b/subprojects/scala/src/integTest/groovy/org/gradle/integtests/fixtures/ScalaCoverage.groovy @@ -20,13 +20,32 @@ import org.gradle.api.JavaVersion class ScalaCoverage { - static final String[] SCALA_2 = ["2.11.12", "2.12.17", "2.13.10"] - static final String[] SCALA_3 = ["3.1.3", "3.2.1"] + private static final Map SCALA_2_VERSIONS = [ + "2.11.12": JavaVersion.VERSION_1_9, + "2.12.18": JavaVersion.VERSION_20, + "2.13.11": JavaVersion.VERSION_20, + ] + private static final Map SCALA_3_VERSIONS = [ + "3.1.3": JavaVersion.VERSION_18, + "3.2.2": JavaVersion.VERSION_19, + "3.3.0": JavaVersion.VERSION_20, + ] + static final String[] SCALA_2 = SCALA_2_VERSIONS.keySet().toArray(new String[0]) + static final String[] SCALA_3 = SCALA_3_VERSIONS.keySet().toArray(new String[0]) static final String[] DEFAULT = SCALA_2 + SCALA_3 static final String[] LATEST_IN_MAJOR = [SCALA_2.last(), SCALA_3.last()] - //to be used with getOrDefault(version, JavaVersion.VERSION_1_8) - static final Map SCALA_VERSION_TO_MAX_JAVA_VERSION = ["2.13.6" : JavaVersion.VERSION_17, "2.13.1": JavaVersion.VERSION_12] + static JavaVersion getMaximumJavaVersionForScalaVersion(Object scalaVersion) { + def v2 = SCALA_2_VERSIONS.get(scalaVersion) + if (v2 != null) { + return v2 + } + def v3 = SCALA_3_VERSIONS.get(scalaVersion) + if (v3 != null) { + return v3 + } + throw new IllegalArgumentException("Unknown Scala version: " + scalaVersion) + } } diff --git a/subprojects/scala/src/integTest/groovy/org/gradle/scala/compile/AbstractToolchainZincScalaCompileIntegrationTest.groovy b/subprojects/scala/src/integTest/groovy/org/gradle/scala/compile/AbstractToolchainZincScalaCompileIntegrationTest.groovy index fe7cd7d5a4e4..73a9a6b4a432 100644 --- a/subprojects/scala/src/integTest/groovy/org/gradle/scala/compile/AbstractToolchainZincScalaCompileIntegrationTest.groovy +++ b/subprojects/scala/src/integTest/groovy/org/gradle/scala/compile/AbstractToolchainZincScalaCompileIntegrationTest.groovy @@ -16,7 +16,7 @@ package org.gradle.scala.compile -import org.gradle.api.JavaVersion + import org.gradle.integtests.fixtures.ScalaCoverage import org.gradle.integtests.fixtures.jvm.JavaToolchainFixture import org.gradle.internal.jvm.Jvm @@ -29,7 +29,7 @@ abstract class AbstractToolchainZincScalaCompileIntegrationTest extends BasicZin def setup() { jdk = computeJdkForTest() Assume.assumeNotNull(jdk) - Assume.assumeTrue(ScalaCoverage.SCALA_VERSION_TO_MAX_JAVA_VERSION.getOrDefault(version, JavaVersion.VERSION_1_8).isCompatibleWith(jdk.javaVersion)) + Assume.assumeTrue(jdk.javaVersion <= ScalaCoverage.getMaximumJavaVersionForScalaVersion(version)) executer.beforeExecute { withInstallations(jdk) } diff --git a/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerMiscEndUserIntegrationTest.groovy b/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerMiscEndUserIntegrationTest.groovy index 235ccce168cc..94226e565629 100644 --- a/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerMiscEndUserIntegrationTest.groovy +++ b/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerMiscEndUserIntegrationTest.groovy @@ -41,6 +41,9 @@ class GradleRunnerMiscEndUserIntegrationTest extends BaseTestKitEndUserIntegrati suites { test { useSpock() + dependencies { + implementation localGroovy() + } } } } diff --git a/subprojects/testing-jvm/src/integTest/groovy/org/gradle/testing/TestTaskJdkRelocationIntegrationTest.groovy b/subprojects/testing-jvm/src/integTest/groovy/org/gradle/testing/TestTaskJdkRelocationIntegrationTest.groovy index 272e92f2b2d5..2ee3900230ee 100644 --- a/subprojects/testing-jvm/src/integTest/groovy/org/gradle/testing/TestTaskJdkRelocationIntegrationTest.groovy +++ b/subprojects/testing-jvm/src/integTest/groovy/org/gradle/testing/TestTaskJdkRelocationIntegrationTest.groovy @@ -19,6 +19,7 @@ package org.gradle.testing import org.gradle.api.JavaVersion import org.gradle.integtests.fixtures.AbstractTaskRelocationIntegrationTest import org.gradle.integtests.fixtures.AvailableJavaHomes +import org.gradle.integtests.fixtures.jvm.JavaToolchainFixture import org.gradle.internal.jvm.Jvm import org.gradle.test.precondition.Requires import org.gradle.test.preconditions.IntegTestPreconditions @@ -27,7 +28,13 @@ import org.gradle.util.internal.TextUtil import static org.gradle.util.internal.TextUtil.normaliseLineSeparators @Requires(IntegTestPreconditions.MoreThanOneJava8HomeAvailable) -class TestTaskJdkRelocationIntegrationTest extends AbstractTaskRelocationIntegrationTest { +class TestTaskJdkRelocationIntegrationTest extends AbstractTaskRelocationIntegrationTest implements JavaToolchainFixture { + + def setup() { + executer.beforeExecute { + withInstallations(AvailableJavaHomes.jdk11) + } + } private File getOriginalJavaExecutable() { getAvailableJdk8s()[0].javaExecutable @@ -70,6 +77,9 @@ class TestTaskJdkRelocationIntegrationTest extends AbstractTaskRelocationIntegra } java { + toolchain { + languageVersion = JavaLanguageVersion.of(11) + } sourceCompatibility = "1.7" targetCompatibility = "1.7" } diff --git a/subprojects/tooling-api/src/crossVersionTest/groovy/org/gradle/integtests/tooling/r25/TestProgressCrossVersionSpec.groovy b/subprojects/tooling-api/src/crossVersionTest/groovy/org/gradle/integtests/tooling/r25/TestProgressCrossVersionSpec.groovy index 8b87bcf4396c..b7b559748936 100644 --- a/subprojects/tooling-api/src/crossVersionTest/groovy/org/gradle/integtests/tooling/r25/TestProgressCrossVersionSpec.groovy +++ b/subprojects/tooling-api/src/crossVersionTest/groovy/org/gradle/integtests/tooling/r25/TestProgressCrossVersionSpec.groovy @@ -17,7 +17,7 @@ package org.gradle.integtests.tooling.r25 -import org.gradle.api.JavaVersion + import org.gradle.integtests.tooling.fixture.ProgressEvents import org.gradle.integtests.tooling.fixture.ToolingApiSpecification import org.gradle.integtests.tooling.fixture.WithOldConfigurationsSupport @@ -482,7 +482,6 @@ class TestProgressCrossVersionSpec extends ToolingApiSpecification implements Wi def goodCode() { buildFile << """ apply plugin: 'java' - ${javaSourceCompatibility(JavaVersion.VERSION_1_7)} ${mavenCentralRepository()} dependencies { ${testImplementationConfiguration} 'junit:junit:4.13' } compileTestJava.options.fork = true // forked as 'Gradle Test Executor 1' @@ -497,12 +496,4 @@ class TestProgressCrossVersionSpec extends ToolingApiSpecification implements Wi } """ } - - private String javaSourceCompatibility(JavaVersion javaVersion) { - if (targetVersion >= GradleVersion.version("5.0")) { - return "java.sourceCompatibility = JavaVersion.${javaVersion.name()}" - } else { - return "sourceCompatibility = '${javaVersion.toString()}'" - } - } } diff --git a/subprojects/workers/src/integTest/groovy/org/gradle/workers/internal/WorkerDaemonIntegrationTest.groovy b/subprojects/workers/src/integTest/groovy/org/gradle/workers/internal/WorkerDaemonIntegrationTest.groovy index a9f6d398d798..ec1f4d1f7e7b 100644 --- a/subprojects/workers/src/integTest/groovy/org/gradle/workers/internal/WorkerDaemonIntegrationTest.groovy +++ b/subprojects/workers/src/integTest/groovy/org/gradle/workers/internal/WorkerDaemonIntegrationTest.groovy @@ -18,6 +18,7 @@ package org.gradle.workers.internal import org.gradle.integtests.fixtures.AvailableJavaHomes import org.gradle.integtests.fixtures.executer.GradleContextualExecuter +import org.gradle.integtests.fixtures.jvm.JavaToolchainFixture import org.gradle.integtests.fixtures.timeout.IntegrationTestTimeout import org.gradle.internal.jvm.Jvm import org.gradle.test.precondition.TestPrecondition @@ -30,7 +31,7 @@ import static org.gradle.api.internal.file.TestFiles.systemSpecificAbsolutePath import static org.gradle.util.internal.TextUtil.normaliseFileSeparators @IntegrationTestTimeout(180) -class WorkerDaemonIntegrationTest extends AbstractWorkerExecutorIntegrationTest { +class WorkerDaemonIntegrationTest extends AbstractWorkerExecutorIntegrationTest implements JavaToolchainFixture { boolean isOracleJDK = TestPrecondition.satisfied(UnitTestPreconditions.JdkOracle) && (Jvm.current().jre != null) WorkerExecutorFixture.WorkActionClass workActionThatPrintsWorkingDirectory @@ -166,7 +167,7 @@ class WorkerDaemonIntegrationTest extends AbstractWorkerExecutorIntegrationTest """ when: - succeeds("runInDaemon") + withInstallations(AvailableJavaHomes.jdk11).succeeds("runInDaemon") then: assertWorkerExecuted("runInDaemon") diff --git a/subprojects/workers/src/testFixtures/groovy/org/gradle/workers/fixtures/WorkerExecutorFixture.groovy b/subprojects/workers/src/testFixtures/groovy/org/gradle/workers/fixtures/WorkerExecutorFixture.groovy index 183e52775c84..3bdedd97dd4a 100644 --- a/subprojects/workers/src/testFixtures/groovy/org/gradle/workers/fixtures/WorkerExecutorFixture.groovy +++ b/subprojects/workers/src/testFixtures/groovy/org/gradle/workers/fixtures/WorkerExecutorFixture.groovy @@ -201,6 +201,7 @@ class WorkerExecutorFixture { void withJava7CompatibleClasses() { file('buildSrc/build.gradle') << """ + java.toolchain.languageVersion = JavaLanguageVersion.of(11) tasks.withType(JavaCompile) { sourceCompatibility = "1.7" targetCompatibility = "1.7"