[Gradle] Add Gradle 8.1+ plugin variant

This commit is contained in:
Alexander.Likhachev
2023-05-08 20:26:15 +02:00
committed by Space Team
parent 6c5061a19f
commit 4ec48cfb82
5 changed files with 180 additions and 1 deletions
@@ -0,0 +1,151 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.plugin
import com.android.build.gradle.BaseExtension
import org.gradle.api.Named
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.model.ObjectFactory
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
import org.jetbrains.kotlin.gradle.plugin.internal.*
import javax.inject.Inject
private const val PLUGIN_VARIANT_NAME = "gradle81"
open class KotlinPluginWrapper @Inject constructor(
registry: ToolingModelBuilderRegistry
) : AbstractKotlinPluginWrapper(registry) {
override val pluginVariant: String = PLUGIN_VARIANT_NAME
override fun apply(project: Project) {
project.registerVariantImplementations()
super.apply(project)
}
}
open class KotlinCommonPluginWrapper @Inject constructor(
registry: ToolingModelBuilderRegistry
) : AbstractKotlinCommonPluginWrapper(registry) {
override val pluginVariant: String = PLUGIN_VARIANT_NAME
override fun apply(project: Project) {
project.registerVariantImplementations()
super.apply(project)
}
}
open class KotlinAndroidPluginWrapper @Inject constructor(
registry: ToolingModelBuilderRegistry
) : AbstractKotlinAndroidPluginWrapper(registry) {
override val pluginVariant: String = PLUGIN_VARIANT_NAME
override fun apply(project: Project) {
project.registerVariantImplementations()
super.apply(project)
}
}
@Suppress("DEPRECATION_ERROR")
open class Kotlin2JsPluginWrapper @Inject constructor(
registry: ToolingModelBuilderRegistry
) : AbstractKotlin2JsPluginWrapper(registry) {
override val pluginVariant: String = PLUGIN_VARIANT_NAME
override fun apply(project: Project) {
project.registerVariantImplementations()
super.apply(project)
}
}
open class KotlinMultiplatformPluginWrapper : AbstractKotlinMultiplatformPluginWrapper() {
override val pluginVariant: String = PLUGIN_VARIANT_NAME
override fun apply(project: Project) {
project.registerVariantImplementations()
super.apply(project)
}
}
open class KotlinJsPluginWrapper : AbstractKotlinJsPluginWrapper() {
override val pluginVariant: String = PLUGIN_VARIANT_NAME
override fun apply(project: Project) {
project.registerVariantImplementations()
super.apply(project)
}
}
open class KotlinPm20PluginWrapper @Inject constructor(
objectFactory: ObjectFactory
) : AbstractKotlinPm20PluginWrapper(objectFactory) {
override val pluginVariant: String = PLUGIN_VARIANT_NAME
override fun apply(project: Project) {
project.registerVariantImplementations()
super.apply(project)
}
}
open class KotlinPlatformJvmPlugin : KotlinPlatformImplementationPluginBase("jvm") {
override fun apply(project: Project) {
project.applyPlugin<KotlinPluginWrapper>()
super.apply(project)
}
}
open class KotlinPlatformJsPlugin : KotlinPlatformImplementationPluginBase("js") {
override fun apply(project: Project) {
@Suppress("DEPRECATION_ERROR")
project.applyPlugin<Kotlin2JsPluginWrapper>()
super.apply(project)
}
}
open class KotlinPlatformAndroidPlugin : KotlinPlatformImplementationPluginBase("android") {
override fun apply(project: Project) {
project.applyPlugin<KotlinAndroidPluginWrapper>()
super.apply(project)
}
override fun namedSourceSetsContainer(project: Project): NamedDomainObjectContainer<*> =
(project.extensions.getByName("android") as BaseExtension).sourceSets
override fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: Named, platformProject: Project) {
val androidExtension = platformProject.extensions.getByName("android") as BaseExtension
val androidSourceSet = androidExtension.sourceSets.findByName(commonSourceSet.name) ?: return
val kotlinSourceSet = androidSourceSet.getExtension<SourceDirectorySet>(KOTLIN_DSL_NAME)
?: return
kotlinSourceSet.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!)
}
}
open class KotlinPlatformCommonPlugin : KotlinPlatformPluginBase("common") {
override fun apply(project: Project) {
warnAboutKotlin12xMppDeprecation(project)
project.applyPlugin<KotlinCommonPluginWrapper>()
}
}
open class KotlinApiPlugin : KotlinBaseApiPlugin() {
override fun apply(project: Project) {
project.registerVariantImplementations()
super.apply(project)
}
}
@Suppress("UnusedReceiverParameter")
private fun Project.registerVariantImplementations() {
}