Add Gradle version specific accessor for BasePlugin configuration
^KT-47047 In Progress
This commit is contained in:
+7
-2
@@ -29,9 +29,9 @@ import org.jetbrains.kotlin.gradle.dsl.*
|
|||||||
import org.jetbrains.kotlin.gradle.internal.KOTLIN_COMPILER_EMBEDDABLE
|
import org.jetbrains.kotlin.gradle.internal.KOTLIN_COMPILER_EMBEDDABLE
|
||||||
import org.jetbrains.kotlin.gradle.internal.KOTLIN_MODULE_GROUP
|
import org.jetbrains.kotlin.gradle.internal.KOTLIN_MODULE_GROUP
|
||||||
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
|
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.*
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.BasePluginConfiguration
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.DefaultJavaSourceSetsAccessorVariantFactory
|
import org.jetbrains.kotlin.gradle.plugin.internal.DefaultJavaSourceSetsAccessorVariantFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.MavenPluginConfigurator
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20GradlePlugin
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20GradlePlugin
|
||||||
@@ -196,6 +196,11 @@ abstract class KotlinBasePluginWrapper : DefaultKotlinBasePlugin() {
|
|||||||
JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class,
|
JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class,
|
||||||
DefaultJavaSourceSetsAccessorVariantFactory()
|
DefaultJavaSourceSetsAccessorVariantFactory()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
factories.putIfAbsent(
|
||||||
|
BasePluginConfiguration.BasePluginConfigurationVariantFactory::class,
|
||||||
|
DefaultBasePluginConfigurationVariantFactory()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal open fun createTestRegistry(project: Project) = KotlinTestsRegistry(project)
|
internal open fun createTestRegistry(project: Project) = KotlinTestsRegistry(project)
|
||||||
|
|||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* 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.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.plugins.BasePluginExtension
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.getByType
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accessor for [BasePlugin] configuration.
|
||||||
|
*
|
||||||
|
* From Gradle 7.1 [org.gradle.api.plugins.BasePluginConvention] was replaced with [org.gradle.api.plugins.BasePluginExtension].
|
||||||
|
*/
|
||||||
|
internal interface BasePluginConfiguration {
|
||||||
|
val archivesName: Property<String>
|
||||||
|
val distsDirectory: DirectoryProperty
|
||||||
|
|
||||||
|
interface BasePluginConfigurationVariantFactory : VariantImplementationFactories.VariantImplementationFactory {
|
||||||
|
fun getInstance(project: Project): BasePluginConfiguration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class DefaultBasePluginConfigurationVariantFactory : BasePluginConfiguration.BasePluginConfigurationVariantFactory {
|
||||||
|
override fun getInstance(project: Project): BasePluginConfiguration {
|
||||||
|
return DefaultBasePluginConfiguration(project.extensions.getByType())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class DefaultBasePluginConfiguration(
|
||||||
|
private val basePluginExtension: BasePluginExtension
|
||||||
|
) : BasePluginConfiguration {
|
||||||
|
override val archivesName: Property<String>
|
||||||
|
get() = basePluginExtension.archivesName
|
||||||
|
|
||||||
|
override val distsDirectory: DirectoryProperty
|
||||||
|
get() = basePluginExtension.distsDirectory
|
||||||
|
}
|
||||||
+1
-1
@@ -153,7 +153,7 @@ open class DefaultCompilationDetails<T : KotlinCommonOptions>(
|
|||||||
|
|
||||||
override val ownModuleName: String
|
override val ownModuleName: String
|
||||||
get() {
|
get() {
|
||||||
val baseName = project.archivesName
|
val baseName = project.archivesName.orNull
|
||||||
?: project.name
|
?: project.name
|
||||||
val suffix = if (isMainCompilationData()) "" else "_$compilationPurpose"
|
val suffix = if (isMainCompilationData()) "" else "_$compilationPurpose"
|
||||||
return filterModuleName("$baseName$suffix")
|
return filterModuleName("$baseName$suffix")
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ class GradleKpmJvmVariantCompilationData(val variant: GradleKpmJvmVariant) : Gra
|
|||||||
|
|
||||||
internal fun GradleKpmVariant.ownModuleName(): String {
|
internal fun GradleKpmVariant.ownModuleName(): String {
|
||||||
val project = containingModule.project
|
val project = containingModule.project
|
||||||
val baseName = project.archivesName
|
val baseName = project.archivesName.orNull
|
||||||
?: 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")
|
||||||
|
|||||||
+1
-1
@@ -85,7 +85,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.archivesName
|
val baseName = project.archivesName.orNull
|
||||||
?: 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")
|
||||||
|
|||||||
+12
-13
@@ -8,10 +8,9 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util
|
|||||||
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.utils.isGradleVersionAtLeast
|
import org.jetbrains.kotlin.gradle.plugin.internal.BasePluginConfiguration
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
|
||||||
import org.jetbrains.kotlin.project.model.KpmModule
|
import org.jetbrains.kotlin.project.model.KpmModule
|
||||||
import org.jetbrains.kotlin.project.model.KpmLocalModuleIdentifier
|
import org.jetbrains.kotlin.project.model.KpmLocalModuleIdentifier
|
||||||
|
|
||||||
@@ -26,19 +25,19 @@ fun Project.currentBuildId(): BuildIdentifier =
|
|||||||
/**
|
/**
|
||||||
* The base name to use for archive files.
|
* The base name to use for archive files.
|
||||||
*/
|
*/
|
||||||
val Project.archivesName get() = if (isGradleVersionAtLeast(7, 1)) {
|
val Project.archivesName
|
||||||
extensions.getByType(BasePluginExtension::class.java).archivesName.orNull
|
get() = gradle
|
||||||
} else {
|
.variantImplementationFactory<BasePluginConfiguration.BasePluginConfigurationVariantFactory>()
|
||||||
convention.findPlugin(BasePluginConvention::class.java)?.archivesBaseName
|
.getInstance(this)
|
||||||
}
|
.archivesName
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the directory to generate TAR and ZIP archives into.
|
* Returns the directory to generate TAR and ZIP archives into.
|
||||||
*
|
*
|
||||||
* @return The directory. Never returns null.
|
* @return The directory. Never returns null.
|
||||||
*/
|
*/
|
||||||
val Project.distsDirectory get() = if (isGradleVersionAtLeast(7, 1)) {
|
val Project.distsDirectory
|
||||||
extensions.getByType(BasePluginExtension::class.java).distsDirectory
|
get() = gradle
|
||||||
} else {
|
.variantImplementationFactory<BasePluginConfiguration.BasePluginConfigurationVariantFactory>()
|
||||||
convention.getPlugin(BasePluginConvention::class.java).distsDirectory
|
.getInstance(this)
|
||||||
}
|
.distsDirectory
|
||||||
|
|||||||
+2
-2
@@ -129,7 +129,7 @@ constructor(
|
|||||||
|
|
||||||
@Nested
|
@Nested
|
||||||
val output: KotlinWebpackOutput = KotlinWebpackOutput(
|
val output: KotlinWebpackOutput = KotlinWebpackOutput(
|
||||||
library = project.archivesName,
|
library = project.archivesName.orNull,
|
||||||
libraryTarget = KotlinWebpackOutput.Target.UMD,
|
libraryTarget = KotlinWebpackOutput.Target.UMD,
|
||||||
globalObject = "this"
|
globalObject = "this"
|
||||||
)
|
)
|
||||||
@@ -154,7 +154,7 @@ constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val defaultOutputFileName by lazy {
|
private val defaultOutputFileName by lazy {
|
||||||
project.archivesName + ".js"
|
project.archivesName.orNull + ".js"
|
||||||
}
|
}
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
|
|||||||
+4
@@ -12,6 +12,8 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.BasePluginConfiguration
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.BasePluginConfigurationG70
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
|
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessorG70
|
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessorG70
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -138,4 +140,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
val factories = VariantImplementationFactories.get(gradle)
|
val factories = VariantImplementationFactories.get(gradle)
|
||||||
factories[JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class] =
|
factories[JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class] =
|
||||||
JavaSourceSetsAccessorG70.JavaSourceSetAccessorVariantFactoryG70()
|
JavaSourceSetsAccessorG70.JavaSourceSetAccessorVariantFactoryG70()
|
||||||
|
factories[BasePluginConfiguration.BasePluginConfigurationVariantFactory::class] =
|
||||||
|
BasePluginConfigurationG70.BasePluginConfigurationVariantFactoryG70()
|
||||||
}
|
}
|
||||||
|
|||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* 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.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.model.ObjectFactory
|
||||||
|
import org.gradle.api.plugins.BasePluginConvention
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.chainedFinalizeValueOnRead
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.propertyWithConvention
|
||||||
|
|
||||||
|
internal class BasePluginConfigurationG70(
|
||||||
|
private val basePluginConvention: BasePluginConvention,
|
||||||
|
private val objects: ObjectFactory
|
||||||
|
) : BasePluginConfiguration {
|
||||||
|
override val archivesName: Property<String>
|
||||||
|
get() = objects
|
||||||
|
.propertyWithConvention(basePluginConvention.archivesBaseName)
|
||||||
|
.chainedFinalizeValueOnRead()
|
||||||
|
|
||||||
|
override val distsDirectory: DirectoryProperty
|
||||||
|
get() = basePluginConvention.distsDirectory
|
||||||
|
|
||||||
|
internal class BasePluginConfigurationVariantFactoryG70 : BasePluginConfiguration.BasePluginConfigurationVariantFactory {
|
||||||
|
override fun getInstance(project: Project): BasePluginConfiguration {
|
||||||
|
return BasePluginConfigurationG70(
|
||||||
|
project.convention.getPlugin(BasePluginConvention::class.java),
|
||||||
|
project.objects
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
-3
@@ -12,10 +12,8 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
|
import org.jetbrains.kotlin.gradle.plugin.internal.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessorG6
|
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessorG6
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.MavenPluginConfigurator
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.MavenPluginConfiguratorG6
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
private const val PLUGIN_VARIANT_NAME = "main"
|
private const val PLUGIN_VARIANT_NAME = "main"
|
||||||
@@ -147,4 +145,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
MavenPluginConfiguratorG6.Gradle6MavenPluginConfiguratorVariantFactory()
|
MavenPluginConfiguratorG6.Gradle6MavenPluginConfiguratorVariantFactory()
|
||||||
factories[JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class] =
|
factories[JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class] =
|
||||||
JavaSourceSetsAccessorG6.JavaSourceSetAccessorVariantFactoryG70()
|
JavaSourceSetsAccessorG6.JavaSourceSetAccessorVariantFactoryG70()
|
||||||
|
factories[BasePluginConfiguration.BasePluginConfigurationVariantFactory::class] =
|
||||||
|
BasePluginConfigurationG6.BasePluginConfigurationVariantFactoryG6()
|
||||||
}
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* 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.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.model.ObjectFactory
|
||||||
|
import org.gradle.api.plugins.BasePluginConvention
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.chainedFinalizeValueOnRead
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.propertyWithConvention
|
||||||
|
|
||||||
|
internal class BasePluginConfigurationG6(
|
||||||
|
private val basePluginConvention: BasePluginConvention,
|
||||||
|
private val objects: ObjectFactory
|
||||||
|
) : BasePluginConfiguration {
|
||||||
|
override val archivesName: Property<String>
|
||||||
|
get() = objects
|
||||||
|
.propertyWithConvention(basePluginConvention.archivesBaseName)
|
||||||
|
.chainedFinalizeValueOnRead()
|
||||||
|
|
||||||
|
override val distsDirectory: DirectoryProperty
|
||||||
|
get() = basePluginConvention.distsDirectory
|
||||||
|
|
||||||
|
internal class BasePluginConfigurationVariantFactoryG6 : BasePluginConfiguration.BasePluginConfigurationVariantFactory {
|
||||||
|
override fun getInstance(project: Project): BasePluginConfiguration {
|
||||||
|
return BasePluginConfigurationG6(
|
||||||
|
project.convention.getPlugin(BasePluginConvention::class.java),
|
||||||
|
project.objects
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user