[MPP]: Add support for old Gradle BasePluginConvention

BasePluginConvention was deprecated in favor of BasePluginExtension
which was introduced in 7.1. So it should be supported until 8.0
where it will be removed.
This commit is contained in:
Anton Lakotka
2022-01-20 14:13:16 +01:00
committed by Space
parent f1261bd799
commit c5f0cea9a1
6 changed files with 35 additions and 17 deletions
@@ -11,7 +11,6 @@ import org.gradle.api.UnknownTaskException
import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.Dependency
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.file.SourceDirectorySet import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.plugins.BasePluginExtension
import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.bundling.AbstractArchiveTask import org.gradle.api.tasks.bundling.AbstractArchiveTask
@@ -160,7 +159,7 @@ open class DefaultCompilationDetails<T : KotlinCommonOptions>(
override val ownModuleName: String override val ownModuleName: String
get() { get() {
val baseName = project.extensions.getByType(BasePluginExtension::class.java)?.archivesName val baseName = project.archivesName
?: project.name ?: project.name
val suffix = if (isMainCompilationData()) "" else "_$compilationPurpose" val suffix = if (isMainCompilationData()) "" else "_$compilationPurpose"
return filterModuleName("$baseName$suffix") return filterModuleName("$baseName$suffix")
@@ -5,12 +5,7 @@
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import groovy.lang.Closure
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.gradle.api.plugins.BasePluginConvention
import org.gradle.api.Project
import org.gradle.api.file.FileCollection
import org.gradle.api.plugins.BasePluginExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl
import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.*
@@ -50,7 +45,7 @@ class KotlinJvmVariantCompilationData(val variant: KotlinJvmVariant) : KotlinVar
internal fun KotlinGradleVariant.ownModuleName(): String { internal fun KotlinGradleVariant.ownModuleName(): String {
val project = containingModule.project val project = containingModule.project
val baseName = project.extensions.getByType(BasePluginExtension::class.java).archivesName.orNull val baseName = project.archivesName
?: project.name ?: project.name
val suffix = if (containingModule.moduleClassifier == null) "" else "_${containingModule.moduleClassifier}" val suffix = if (containingModule.moduleClassifier == null) "" else "_${containingModule.moduleClassifier}"
return filterModuleName("$baseName$suffix") return filterModuleName("$baseName$suffix")
@@ -9,7 +9,6 @@ import org.gradle.api.DefaultTask
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.file.SourceDirectorySet import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.plugins.BasePluginExtension
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptionsImpl import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptionsImpl
@@ -83,7 +82,7 @@ internal abstract class AbstractKotlinFragmentMetadataCompilationData<T : Kotlin
override val moduleName: String override val moduleName: String
get() { // FIXME deduplicate with ownModuleName get() { // FIXME deduplicate with ownModuleName
val baseName = project.extensions.getByType(BasePluginExtension::class.java).archivesName.orNull val baseName = project.archivesName
?: project.name ?: project.name
val suffix = if (module.moduleClassifier == null) "" else "_${module.moduleClassifier}" val suffix = if (module.moduleClassifier == null) "" else "_${module.moduleClassifier}"
return filterModuleName("$baseName$suffix") return filterModuleName("$baseName$suffix")
@@ -8,11 +8,14 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.component.BuildIdentifier import org.gradle.api.artifacts.component.BuildIdentifier
import org.gradle.api.internal.project.ProjectInternal import org.gradle.api.internal.project.ProjectInternal
import org.gradle.api.plugins.BasePluginConvention
import org.gradle.api.plugins.BasePluginExtension
import org.gradle.internal.build.BuildState import org.gradle.internal.build.BuildState
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
import org.jetbrains.kotlin.project.model.KotlinModule import org.jetbrains.kotlin.project.model.KotlinModule
import org.jetbrains.kotlin.project.model.LocalModuleIdentifier import org.jetbrains.kotlin.project.model.LocalModuleIdentifier
@@ -28,4 +31,25 @@ fun KotlinModule.representsProject(project: Project): Boolean =
// FIXME internal API? // FIXME internal API?
fun Project.currentBuildId(): BuildIdentifier = fun Project.currentBuildId(): BuildIdentifier =
(project as ProjectInternal).services.get(BuildState::class.java).buildIdentifier (project as ProjectInternal).services.get(BuildState::class.java).buildIdentifier
/**
* The base name to use for archive files.
*/
val Project.archivesName get() = if (isGradleVersionAtLeast(7, 1)) {
extensions.getByType(BasePluginExtension::class.java).archivesName.orNull
} else {
convention.findPlugin(BasePluginConvention::class.java)?.archivesBaseName
}
/**
* Returns the directory to generate TAR and ZIP archives into.
*
* @return The directory. Never returns null.
*/
val Project.distsDirectory get() = if (isGradleVersionAtLeast(7, 1)) {
extensions.getByType(BasePluginExtension::class.java).distsDirectory
} else {
convention.getPlugin(BasePluginConvention::class.java).distsDirectory
}
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.gradle.targets.js.subtargets package org.jetbrains.kotlin.gradle.targets.js.subtargets
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.plugins.BasePluginExtension import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.distsDirectory
import org.jetbrains.kotlin.gradle.targets.js.dsl.Distribution import org.jetbrains.kotlin.gradle.targets.js.dsl.Distribution
import org.jetbrains.kotlin.gradle.utils.property import org.jetbrains.kotlin.gradle.utils.property
import java.io.File import java.io.File
@@ -20,7 +20,7 @@ class DefaultDistribution(
project.buildDir project.buildDir
.let { buildDir -> .let { buildDir ->
name?.let { buildDir.resolve(it) } name?.let { buildDir.resolve(it) }
?: project.extensions.getByType(BasePluginExtension::class.java).distsDirectory.asFile.get() ?: project.distsDirectory.asFile.get()
} }
} }
} }
@@ -11,7 +11,6 @@ import org.gradle.api.file.FileCollection
import org.gradle.api.file.RegularFileProperty import org.gradle.api.file.RegularFileProperty
import org.gradle.api.internal.file.FileResolver import org.gradle.api.internal.file.FileResolver
import org.gradle.api.model.ObjectFactory import org.gradle.api.model.ObjectFactory
import org.gradle.api.plugins.BasePluginExtension
import org.gradle.api.provider.Provider import org.gradle.api.provider.Provider
import org.gradle.api.tasks.* import org.gradle.api.tasks.*
import org.gradle.deployment.internal.Deployment import org.gradle.deployment.internal.Deployment
@@ -21,6 +20,8 @@ import org.gradle.process.internal.ExecHandle
import org.gradle.process.internal.ExecHandleFactory import org.gradle.process.internal.ExecHandleFactory
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.archivesName
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.distsDirectory
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
@@ -108,7 +109,7 @@ constructor(
@Nested @Nested
val output: KotlinWebpackOutput = KotlinWebpackOutput( val output: KotlinWebpackOutput = KotlinWebpackOutput(
library = project.extensions.getByType(BasePluginExtension::class.java).archivesName.orNull, library = project.archivesName,
libraryTarget = KotlinWebpackOutput.Target.UMD, libraryTarget = KotlinWebpackOutput.Target.UMD,
globalObject = "this" globalObject = "this"
) )
@@ -122,7 +123,7 @@ constructor(
internal var _destinationDirectory: File? = null internal var _destinationDirectory: File? = null
private val defaultDestinationDirectory by lazy { private val defaultDestinationDirectory by lazy {
project.extensions.getByType(BasePluginExtension::class.java).distsDirectory.asFile.get() project.distsDirectory.asFile.get()
} }
@get:Internal @get:Internal
@@ -133,7 +134,7 @@ constructor(
} }
private val defaultOutputFileName by lazy { private val defaultOutputFileName by lazy {
project.extensions.getByType(BasePluginExtension::class.java).archivesName.orNull + ".js" project.archivesName + ".js"
} }
@get:Internal @get:Internal