[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.file.FileCollection
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.plugins.BasePluginExtension
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.bundling.AbstractArchiveTask
@@ -160,7 +159,7 @@ open class DefaultCompilationDetails<T : KotlinCommonOptions>(
override val ownModuleName: String
get() {
val baseName = project.extensions.getByType(BasePluginExtension::class.java)?.archivesName
val baseName = project.archivesName
?: project.name
val suffix = if (isMainCompilationData()) "" else "_$compilationPurpose"
return filterModuleName("$baseName$suffix")
@@ -5,12 +5,7 @@
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import groovy.lang.Closure
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.KotlinJvmOptionsImpl
import org.jetbrains.kotlin.gradle.plugin.*
@@ -50,7 +45,7 @@ class KotlinJvmVariantCompilationData(val variant: KotlinJvmVariant) : KotlinVar
internal fun KotlinGradleVariant.ownModuleName(): String {
val project = containingModule.project
val baseName = project.extensions.getByType(BasePluginExtension::class.java).archivesName.orNull
val baseName = project.archivesName
?: project.name
val suffix = if (containingModule.moduleClassifier == null) "" else "_${containingModule.moduleClassifier}"
return filterModuleName("$baseName$suffix")
@@ -9,7 +9,6 @@ import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.file.FileCollection
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.plugins.BasePluginExtension
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonOptionsImpl
@@ -83,7 +82,7 @@ internal abstract class AbstractKotlinFragmentMetadataCompilationData<T : Kotlin
override val moduleName: String
get() { // FIXME deduplicate with ownModuleName
val baseName = project.extensions.getByType(BasePluginExtension::class.java).archivesName.orNull
val baseName = project.archivesName
?: project.name
val suffix = if (module.moduleClassifier == null) "" else "_${module.moduleClassifier}"
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.artifacts.component.BuildIdentifier
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.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
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.LocalModuleIdentifier
@@ -28,4 +31,25 @@ fun KotlinModule.representsProject(project: Project): Boolean =
// FIXME internal API?
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
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.utils.property
import java.io.File
@@ -20,7 +20,7 @@ class DefaultDistribution(
project.buildDir
.let { buildDir ->
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.internal.file.FileResolver
import org.gradle.api.model.ObjectFactory
import org.gradle.api.plugins.BasePluginExtension
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.*
import org.gradle.deployment.internal.Deployment
@@ -21,6 +20,8 @@ import org.gradle.process.internal.ExecHandle
import org.gradle.process.internal.ExecHandleFactory
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
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.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
@@ -108,7 +109,7 @@ constructor(
@Nested
val output: KotlinWebpackOutput = KotlinWebpackOutput(
library = project.extensions.getByType(BasePluginExtension::class.java).archivesName.orNull,
library = project.archivesName,
libraryTarget = KotlinWebpackOutput.Target.UMD,
globalObject = "this"
)
@@ -122,7 +123,7 @@ constructor(
internal var _destinationDirectory: File? = null
private val defaultDestinationDirectory by lazy {
project.extensions.getByType(BasePluginExtension::class.java).distsDirectory.asFile.get()
project.distsDirectory.asFile.get()
}
@get:Internal
@@ -133,7 +134,7 @@ constructor(
}
private val defaultOutputFileName by lazy {
project.extensions.getByType(BasePluginExtension::class.java).archivesName.orNull + ".js"
project.archivesName + ".js"
}
@get:Internal