Add api compatible way to get if project isolation is enabled

Gradle 8.0 internal API has changed returned type. To fix incorrect KGP
behaviour has to add additional Gradle 8.0 plugin variant and provide
project isolation start parameter accessor implementation for older
Gradle versions.

^KT-55624 In Progress
This commit is contained in:
Yahor Berdnikau
2023-03-17 10:59:01 +01:00
committed by Space Team
parent 19b0ffd85c
commit cc1aaf4ba8
20 changed files with 362 additions and 19 deletions
+7 -4
View File
@@ -39,7 +39,7 @@ import java.net.URL
import java.util.*
/**
* Gradle plugins common variants.
* Gradle's plugins common variants.
*
* [minimalSupportedGradleVersion] - minimal Gradle version that is supported in this variant
* [gradleApiVersion] - Gradle API dependency version. Usually should be the same as [minimalSupportedGradleVersion].
@@ -55,7 +55,8 @@ enum class GradlePluginVariant(
GRADLE_71("gradle71", "7.1", "7.1", "https://docs.gradle.org/7.1.1/javadoc/"),
GRADLE_74("gradle74", "7.4", "7.4", "https://docs.gradle.org/7.4.2/javadoc/"),
GRADLE_75("gradle75", "7.5", "7.5", "https://docs.gradle.org/7.5.1/javadoc/"),
GRADLE_76("gradle76", "7.6", "7.6", "https://docs.gradle.org/7.6/javadoc/"),
GRADLE_76("gradle76", "7.6", "7.6", "https://docs.gradle.org/7.6.1/javadoc/"),
GRADLE_80("gradle80", "8.0", "8.0", "https://docs.gradle.org/8.0.2/javadoc/"),
}
val commonSourceSetName = "common"
@@ -438,7 +439,7 @@ fun Project.createGradlePluginVariant(
}
configurations.configureEach {
if (isCanBeConsumed && this@configureEach.name.startsWith(variantSourceSet.name)) {
if (this@configureEach.name.startsWith(variantSourceSet.name)) {
attributes {
attribute(
GradlePluginApiVersion.GRADLE_PLUGIN_API_VERSION_ATTRIBUTE,
@@ -694,7 +695,9 @@ fun Project.configureDokkaPublication(
// Workaround for https://github.com/Kotlin/dokka/issues/2097
// Gradle 7.6 javadoc does not have published 'package-list' file
private fun GradleExternalDocumentationLinkBuilder.addWorkaroundForElementList(pluginVariant: GradlePluginVariant) {
if (pluginVariant == GradlePluginVariant.GRADLE_76) {
if (pluginVariant == GradlePluginVariant.GRADLE_76 ||
pluginVariant == GradlePluginVariant.GRADLE_80
) {
packageListUrl.set(URL("${pluginVariant.gradleApiJavadocUrl}element-list"))
}
}
@@ -94,4 +94,11 @@ if (!kotlinBuildProperties.isInJpsBuildIdeaSync) {
commonSourceSet = commonSourceSet
)
publishShadowedJar(gradle76SourceSet, commonSourceSet)
// Used for Gradle 8.0+ versions
val gradle80SourceSet = createGradlePluginVariant(
GradlePluginVariant.GRADLE_80,
commonSourceSet = commonSourceSet
)
publishShadowedJar(gradle80SourceSet, commonSourceSet)
}
@@ -55,6 +55,13 @@ createGradlePluginVariant(
isGradlePlugin = false
)
// Used for Gradle 8.0+ versions
createGradlePluginVariant(
GradlePluginVariant.GRADLE_80,
commonSourceSet = commonSourceSet,
isGradlePlugin = false
)
publishing {
publications {
register<MavenPublication>(DEFAULT_MAIN_PUBLICATION_NAME) {