From 98325a1d96b7431f5c859794b2309d3e3708da66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp?= Date: Fri, 1 Nov 2024 20:35:03 +0000 Subject: [PATCH 1/9] Add 8.11 to versions --- .../kotlin/com/autonomousapps/internal/GradleVersions.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/kotlin/com/autonomousapps/internal/GradleVersions.kt b/src/main/kotlin/com/autonomousapps/internal/GradleVersions.kt index a3d268536..f5e26fbca 100644 --- a/src/main/kotlin/com/autonomousapps/internal/GradleVersions.kt +++ b/src/main/kotlin/com/autonomousapps/internal/GradleVersions.kt @@ -12,6 +12,7 @@ internal object GradleVersions { private val gradle83: GradleVersion = GradleVersion.version("8.3") private val gradle85: GradleVersion = GradleVersion.version("8.5") private val gradle88: GradleVersion = GradleVersion.version("8.8") + private val gradle811: GradleVersion = GradleVersion.version("8.11") /** Minimum supported version of Gradle. */ @JvmField val minGradleVersion: GradleVersion = gradle74 @@ -29,4 +30,9 @@ internal object GradleVersions { * lifecycle callbacks. */ val isAtLeastGradle88: Boolean = current >= gradle88 + + /** + * Using [GradleVersion.baseVersion] to make sure it works with `8.11-rc-N` versions too. + */ + val isAtLeastGradle811: Boolean = current.baseVersion >= gradle811 } From 57a6eb1d21625a3d345a1557b0fa67bb5f1605ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp?= Date: Fri, 1 Nov 2024 20:53:02 +0000 Subject: [PATCH 2/9] Update wrapper version so new API is visible --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index df97d72b8..27a5dfa42 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-rc-3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 663ce7c5cbb9aeb24e2985a531f8152c5a6e35e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp?= Date: Fri, 1 Nov 2024 20:41:37 +0000 Subject: [PATCH 3/9] Stop using deprecated API --- .../com/autonomousapps/internal/utils/gradleStrings.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/autonomousapps/internal/utils/gradleStrings.kt b/src/main/kotlin/com/autonomousapps/internal/utils/gradleStrings.kt index b77a964ce..56f5dfd20 100644 --- a/src/main/kotlin/com/autonomousapps/internal/utils/gradleStrings.kt +++ b/src/main/kotlin/com/autonomousapps/internal/utils/gradleStrings.kt @@ -200,7 +200,11 @@ internal fun Dependency.toCoordinates(): Coordinates? { */ internal fun Dependency.toIdentifier(): Pair? = when (this) { is ProjectDependency -> { - val identifier = dependencyProject.path + val identifier = + if (GradleVersions.isAtLeastGradle811) + this.path + else + @Suppress("DEPRECATION") dependencyProject.path Pair(ModuleInfo(identifier.intern()), targetGradleVariantIdentification()) } From 9718cfb9f3666cb11d8086eccfe4d25b988b9dab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp?= Date: Fri, 1 Nov 2024 20:47:26 +0000 Subject: [PATCH 4/9] Test on latest RC --- .../groovy/com/autonomousapps/AbstractFunctionalSpec.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/functionalTest/groovy/com/autonomousapps/AbstractFunctionalSpec.groovy b/src/functionalTest/groovy/com/autonomousapps/AbstractFunctionalSpec.groovy index 82f20904b..739b35d7c 100644 --- a/src/functionalTest/groovy/com/autonomousapps/AbstractFunctionalSpec.groovy +++ b/src/functionalTest/groovy/com/autonomousapps/AbstractFunctionalSpec.groovy @@ -17,9 +17,9 @@ abstract class AbstractFunctionalSpec extends Specification { protected static final GRADLE_8_4 = GradleVersion.version('8.4') protected static final GRADLE_8_9 = GradleVersion.version('8.9') protected static final GRADLE_8_10 = GradleVersion.version('8.10.2') - protected static final GRADLE_8_11 = GradleVersion.version('8.11-rc-1') + protected static final GRADLE_8_11 = GradleVersion.version('8.11-rc-3') - protected static final GRADLE_LATEST = GRADLE_8_10 + protected static final GRADLE_LATEST = GRADLE_8_11 // For faster CI times, we only test min + max. Testing all would be preferable, but we don't have till the heat death // of the universe. From cacd7af35a018ae31769e572a60278f9c46e0982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Sat, 9 Nov 2024 03:13:12 +0000 Subject: [PATCH 5/9] > Task :testkit:gradle-testkit-plugin:compileKotlin w: testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt:211:24 'val dependencyProject: Project!' is deprecated. Deprecated in Java. w: testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt:212:21 'val dependencyProject: Project!' is deprecated. Deprecated in Java. --- .../com/autonomousapps/GradleTestKitSupportExtension.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt b/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt index a0f68dde7..08d861534 100644 --- a/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt +++ b/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt @@ -208,8 +208,8 @@ public abstract class GradleTestKitSupportExtension(private val project: Project return configurations.findByName(classpath)?.allDependencies ?.filterIsInstance() // filter out self-dependency - ?.filterNot { it.dependencyProject == project } - ?.map { "${it.dependencyProject.path}:$taskName" } + ?.filterNot { it.path == project.path } + ?.map { "${it.path}:$taskName" } } /** From d9bf2e2c1e2ebf1e1b6f73c75836ac4701b41939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Sat, 9 Nov 2024 03:21:01 +0000 Subject: [PATCH 6/9] Migrate kotlinOptions to compilerOptions > Configure project :build-logic:convention w: build-logic/convention/build.gradle.kts:17:3: 'kotlinOptions(KotlinJvmOptionsDeprecated /* = KotlinJvmOptions */.() -> Unit): Unit' is deprecated. Please migrate to the compilerOptions DSL. More details are here: https://kotl.in/u1r8ln --- build-logic/convention/build.gradle.kts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 80714a3eb..7d29efbad 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -1,6 +1,6 @@ // Copyright (c) 2024. Tony Robalik. // SPDX-License-Identifier: Apache-2.0 -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("java-gradle-plugin") @@ -13,9 +13,9 @@ java { } } -tasks.withType().configureEach { - kotlinOptions { - jvmTarget = libs.versions.java.get() +kotlin { + compilerOptions { + jvmTarget = libs.versions.java.map(JvmTarget::fromTarget).get() freeCompilerArgs = listOf("-Xinline-classes", "-opt-in=kotlin.RequiresOptIn", "-Xsam-conversions=class") } } From f1f1ab6846950f8066cff3ced4a9d0da28e00541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Sat, 9 Nov 2024 03:25:49 +0000 Subject: [PATCH 7/9] Add toolchain plugin everywhere and unify plugin style > Configure project :testkit:gradle-testkit-plugin Using a toolchain installed via auto-provisioning, but having no toolchain repositories configured. This behavior is deprecated. Consider defining toolchain download repositories, otherwise the build might fail in clean environments; see https://docs.gradle.org/8.11-rc-3/userguide/toolchains.html#sub:download_repositoriesed artifacts. --- build-logic/settings.gradle.kts | 7 +++++++ settings.gradle.kts | 3 ++- testkit/settings.gradle.kts | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts index 8a7ac85c2..e11f87ae8 100644 --- a/build-logic/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -7,6 +7,13 @@ pluginManagement { gradlePluginPortal() mavenCentral() } + plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" + } +} + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") } dependencyResolutionManagement { diff --git a/settings.gradle.kts b/settings.gradle.kts index 180aee202..1618c6ab5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -31,12 +31,13 @@ pluginManagement { id("com.github.johnrengelman.shadow") version "8.1.1" id("com.gradle.enterprise") version "3.15.1" id("com.gradle.plugin-publish") version "1.1.0" + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" } } plugins { id("com.gradle.enterprise") - id("org.gradle.toolchains.foojay-resolver-convention") version("0.8.0") + id("org.gradle.toolchains.foojay-resolver-convention") } // Yes, this is also in pluginManagement above. This is required for normal dependencies. diff --git a/testkit/settings.gradle.kts b/testkit/settings.gradle.kts index 3296268d5..69a8f7137 100644 --- a/testkit/settings.gradle.kts +++ b/testkit/settings.gradle.kts @@ -28,11 +28,13 @@ pluginManagement { id("com.gradle.enterprise") version "3.15.1" id("com.gradle.plugin-publish") version "1.1.0" id("org.jetbrains.dokka") version "1.9.20" + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" } } plugins { id("com.gradle.enterprise") + id("org.gradle.toolchains.foojay-resolver-convention") } dependencyResolutionManagement { From fed5c4329713e6863037fc92f668d139845ba1b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Sat, 9 Nov 2024 03:26:18 +0000 Subject: [PATCH 8/9] Add missing .kotlin folder to .gitignore and mark folders. --- .gitignore | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 3c7ebe98d..a5c4b6c1e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ -.gradle -build -out -.idea +.gradle/ +.kotlin/ +build/ +out/ +.idea/ *.iml *~ *.hprof From 67e5aba07ecb3bdd02dc41aa04f7080b41ed9d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp=20=28TWiStErRob=29?= Date: Sun, 10 Nov 2024 00:21:30 +0000 Subject: [PATCH 9/9] Add compatibility layer --- .../autonomousapps/GradleTestKitSupportExtension.kt | 5 +++-- .../kotlin/com/autonomousapps/internal/utils.kt | 13 +++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt b/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt index 08d861534..ffc67f508 100644 --- a/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt +++ b/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/GradleTestKitSupportExtension.kt @@ -3,6 +3,7 @@ package com.autonomousapps import com.autonomousapps.internal.capitalizeSafely +import com.autonomousapps.internal.pathCompat import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.ProjectDependency @@ -208,8 +209,8 @@ public abstract class GradleTestKitSupportExtension(private val project: Project return configurations.findByName(classpath)?.allDependencies ?.filterIsInstance() // filter out self-dependency - ?.filterNot { it.path == project.path } - ?.map { "${it.path}:$taskName" } + ?.filterNot { it.pathCompat == project.path } + ?.map { "${it.pathCompat}:$taskName" } } /** diff --git a/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/internal/utils.kt b/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/internal/utils.kt index a0ed34edf..9ee132835 100644 --- a/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/internal/utils.kt +++ b/testkit/gradle-testkit-plugin/src/main/kotlin/com/autonomousapps/internal/utils.kt @@ -2,6 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package com.autonomousapps.internal +import org.gradle.api.artifacts.ProjectDependency +import org.gradle.util.GradleVersion import java.util.Locale internal fun String.capitalizeSafely(locale: Locale = Locale.ROOT): String { @@ -21,3 +23,14 @@ internal fun String.capitalizeSafely(locale: Locale = Locale.ROOT): String { } return this } + +internal val isAtLeastGradle811: Boolean + get() = GradleVersion.current().baseVersion >= GradleVersion.version("8.11") + +internal val ProjectDependency.pathCompat: String + get() = + if (isAtLeastGradle811) { + this.path + } else { + @Suppress("DEPRECATION") this.dependencyProject.path + }