diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt index 84afcd7c487..f96a960f604 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt @@ -23,7 +23,18 @@ import org.gradle.api.plugins.ExtensionAware @Deprecated("Conventions are deprecated in Gradle") internal inline fun Any.addConvention(name: String, plugin: T) { - (this as HasConvention).convention.plugins[name] = plugin + // Verifying conventions are still available via reflection, + // so Gradle could remove them in Gradle 8.0 release + val conventionsIsAvailable = try { + Class.forName("org.gradle.api.internal.HasConvention") + true + } catch (_: ClassNotFoundException) { + false + } + + if (conventionsIsAvailable) { + (this as HasConvention).convention.plugins[name] = plugin + } } internal inline fun Any.addExtension(name: String, extension: T) =