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_MODULE_GROUP
|
||||
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.JavaSourceSetsAccessor
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.MavenPluginConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20GradlePlugin
|
||||
@@ -196,6 +196,11 @@ abstract class KotlinBasePluginWrapper : DefaultKotlinBasePlugin() {
|
||||
JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class,
|
||||
DefaultJavaSourceSetsAccessorVariantFactory()
|
||||
)
|
||||
|
||||
factories.putIfAbsent(
|
||||
BasePluginConfiguration.BasePluginConfigurationVariantFactory::class,
|
||||
DefaultBasePluginConfigurationVariantFactory()
|
||||
)
|
||||
}
|
||||
|
||||
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
|
||||
get() {
|
||||
val baseName = project.archivesName
|
||||
val baseName = project.archivesName.orNull
|
||||
?: project.name
|
||||
val suffix = if (isMainCompilationData()) "" else "_$compilationPurpose"
|
||||
return filterModuleName("$baseName$suffix")
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ class GradleKpmJvmVariantCompilationData(val variant: GradleKpmJvmVariant) : Gra
|
||||
|
||||
internal fun GradleKpmVariant.ownModuleName(): String {
|
||||
val project = containingModule.project
|
||||
val baseName = project.archivesName
|
||||
val baseName = project.archivesName.orNull
|
||||
?: project.name
|
||||
val suffix = if (containingModule.moduleClassifier == null) "" else "_${containingModule.moduleClassifier}"
|
||||
return filterModuleName("$baseName$suffix")
|
||||
|
||||
+1
-1
@@ -85,7 +85,7 @@ internal abstract class AbstractKotlinFragmentMetadataCompilationData<T : Kotlin
|
||||
|
||||
override val moduleName: String
|
||||
get() { // FIXME deduplicate with ownModuleName
|
||||
val baseName = project.archivesName
|
||||
val baseName = project.archivesName.orNull
|
||||
?: project.name
|
||||
val suffix = if (module.moduleClassifier == null) "" else "_${module.moduleClassifier}"
|
||||
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.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.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.KpmLocalModuleIdentifier
|
||||
|
||||
@@ -26,19 +25,19 @@ fun Project.currentBuildId(): 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
|
||||
}
|
||||
val Project.archivesName
|
||||
get() = gradle
|
||||
.variantImplementationFactory<BasePluginConfiguration.BasePluginConfigurationVariantFactory>()
|
||||
.getInstance(this)
|
||||
.archivesName
|
||||
|
||||
/**
|
||||
* 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
|
||||
}
|
||||
val Project.distsDirectory
|
||||
get() = gradle
|
||||
.variantImplementationFactory<BasePluginConfiguration.BasePluginConfigurationVariantFactory>()
|
||||
.getInstance(this)
|
||||
.distsDirectory
|
||||
|
||||
+2
-2
@@ -129,7 +129,7 @@ constructor(
|
||||
|
||||
@Nested
|
||||
val output: KotlinWebpackOutput = KotlinWebpackOutput(
|
||||
library = project.archivesName,
|
||||
library = project.archivesName.orNull,
|
||||
libraryTarget = KotlinWebpackOutput.Target.UMD,
|
||||
globalObject = "this"
|
||||
)
|
||||
@@ -154,7 +154,7 @@ constructor(
|
||||
}
|
||||
|
||||
private val defaultOutputFileName by lazy {
|
||||
project.archivesName + ".js"
|
||||
project.archivesName.orNull + ".js"
|
||||
}
|
||||
|
||||
@get:Internal
|
||||
|
||||
+4
@@ -12,6 +12,8 @@ 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.BasePluginConfiguration
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.BasePluginConfigurationG70
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessorG70
|
||||
import javax.inject.Inject
|
||||
@@ -138,4 +140,6 @@ private fun Project.registerVariantImplementations() {
|
||||
val factories = VariantImplementationFactories.get(gradle)
|
||||
factories[JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class] =
|
||||
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.model.ObjectFactory
|
||||
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.MavenPluginConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.MavenPluginConfiguratorG6
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val PLUGIN_VARIANT_NAME = "main"
|
||||
@@ -147,4 +145,6 @@ private fun Project.registerVariantImplementations() {
|
||||
MavenPluginConfiguratorG6.Gradle6MavenPluginConfiguratorVariantFactory()
|
||||
factories[JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory::class] =
|
||||
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