KT-MR-5666 Minor fixes, refactorings & formatting
This commit is contained in:
+2
-1
@@ -13,6 +13,7 @@ import org.gradle.api.internal.plugins.DslObject
|
|||||||
import org.gradle.jvm.toolchain.JavaToolchainSpec
|
import org.gradle.jvm.toolchain.JavaToolchainSpec
|
||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
|
||||||
@@ -120,7 +121,7 @@ open class KotlinProjectExtension @Inject constructor(project: Project) : Kotlin
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal val kpmModelContainer by lazy {
|
internal val kpmModelContainer by lazy {
|
||||||
if (PropertiesProvider(project).experimentalKpmModelMapping) {
|
if (project.kotlinPropertiesProvider.experimentalKpmModelMapping) {
|
||||||
DefaultKpmGradleProjectModelContainer.create(project)
|
DefaultKpmGradleProjectModelContainer.create(project)
|
||||||
} else error("Model mapping is not enabled.")
|
} else error("Model mapping is not enabled.")
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -101,11 +101,11 @@ internal fun configureStdlibDefaultDependency(project: Project) = with(project)
|
|||||||
|
|
||||||
val scopesToHandleConfigurations = listOf(KotlinDependencyScope.API_SCOPE, KotlinDependencyScope.IMPLEMENTATION_SCOPE)
|
val scopesToHandleConfigurations = listOf(KotlinDependencyScope.API_SCOPE, KotlinDependencyScope.IMPLEMENTATION_SCOPE)
|
||||||
|
|
||||||
val ext = topLevelExtension
|
val extension = topLevelExtension
|
||||||
when {
|
when {
|
||||||
project.hasKpmModel -> addStdlibToKpmProject(project)
|
project.hasKpmModel -> addStdlibToKpmProject(project)
|
||||||
ext is KotlinProjectExtension -> {
|
extension is KotlinProjectExtension -> {
|
||||||
ext.sourceSets.all { kotlinSourceSet ->
|
extension.sourceSets.all { kotlinSourceSet ->
|
||||||
scopesToHandleConfigurations.forEach { scope ->
|
scopesToHandleConfigurations.forEach { scope ->
|
||||||
val scopeConfiguration = project.sourceSetDependencyConfigurationByScope(kotlinSourceSet, scope)
|
val scopeConfiguration = project.sourceSetDependencyConfigurationByScope(kotlinSourceSet, scope)
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -82,8 +82,7 @@ abstract class KotlinPm20GradlePlugin @Inject constructor(
|
|||||||
fun rootPublicationComponentName(module: KotlinGradleModule) =
|
fun rootPublicationComponentName(module: KotlinGradleModule) =
|
||||||
module.disambiguateName("root")
|
module.disambiguateName("root")
|
||||||
|
|
||||||
open class KotlinPm20ProjectExtension(project: Project) :
|
open class KotlinPm20ProjectExtension(project: Project) : KotlinTopLevelExtension(project) {
|
||||||
KotlinTopLevelExtension(project) {
|
|
||||||
|
|
||||||
internal val kpmModelContainer = DefaultKpmGradleProjectModelContainer.create(project)
|
internal val kpmModelContainer = DefaultKpmGradleProjectModelContainer.create(project)
|
||||||
|
|
||||||
|
|||||||
+12
-14
@@ -37,7 +37,7 @@ interface KotlinVariantCompilationDataInternal<T : KotlinCommonOptions> : Kotlin
|
|||||||
project.filesProvider {
|
project.filesProvider {
|
||||||
val friendVariants = resolveFriendVariants()
|
val friendVariants = resolveFriendVariants()
|
||||||
val friendModuleClassifiers = friendVariants.map { it.containingModule.moduleClassifier }.toSet()
|
val friendModuleClassifiers = friendVariants.map { it.containingModule.moduleClassifier }.toSet()
|
||||||
val artifactView = owner.compileDependenciesConfiguration
|
owner.compileDependenciesConfiguration
|
||||||
.incoming.artifactView { view ->
|
.incoming.artifactView { view ->
|
||||||
view.componentFilter { id ->
|
view.componentFilter { id ->
|
||||||
// FIXME rewrite using the proper module resolution after those changes are merged
|
// FIXME rewrite using the proper module resolution after those changes are merged
|
||||||
@@ -45,11 +45,10 @@ interface KotlinVariantCompilationDataInternal<T : KotlinCommonOptions> : Kotlin
|
|||||||
asProject?.build?.isCurrentBuild == true &&
|
asProject?.build?.isCurrentBuild == true &&
|
||||||
asProject.projectPath == owner.project.path
|
asProject.projectPath == owner.project.path
|
||||||
}
|
}
|
||||||
}.artifacts
|
}.artifacts.filter {
|
||||||
artifactView.filter {
|
// FIXME rewrite using the proper module resolution after those changes are merged
|
||||||
// FIXME rewrite using the proper module resolution after those changes are merged
|
moduleClassifiersFromCapabilities(it.variant.capabilities).any { it in friendModuleClassifiers }
|
||||||
moduleClassifiersFromCapabilities(it.variant.capabilities).any { it in friendModuleClassifiers }
|
}.map { it.file }
|
||||||
}.map { it.file }
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -72,17 +71,16 @@ interface KotlinVariantCompilationDataInternal<T : KotlinCommonOptions> : Kotlin
|
|||||||
?: error("Failed to resolve dependencies of ${owner.containingModule}"))
|
?: error("Failed to resolve dependencies of ${owner.containingModule}"))
|
||||||
.allDependencyModules
|
.allDependencyModules
|
||||||
.filterIsInstance<KotlinGradleModule>()
|
.filterIsInstance<KotlinGradleModule>()
|
||||||
.filter {
|
.filter { dependencyModule ->
|
||||||
// the module comes from the same Gradle project // todo: extend to other friends once supported
|
// the module comes from the same Gradle project // todo: extend to other friends once supported
|
||||||
it.project == owner.containingModule.project &&
|
dependencyModule.project == owner.containingModule.project
|
||||||
// also, important to check that the owner variant really requests this module:
|
|
||||||
variantResolver.getChosenVariant(owner, it) is VariantResolution.VariantMatch
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val friendVariants = friendModules.map {
|
return friendModules
|
||||||
(variantResolver.getChosenVariant(owner, it) as VariantResolution.VariantMatch).chosenVariant
|
.map { friendModule -> variantResolver.getChosenVariant(owner, friendModule) }
|
||||||
}
|
// also, important to check that the owner variant really requests this module:
|
||||||
return friendVariants.filterIsInstance<KotlinGradleVariant>()
|
.filterIsInstance<VariantResolution.VariantMatch>()
|
||||||
|
.mapNotNull { variantMatch -> variantMatch.chosenVariant as? KotlinGradleVariant }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -90,8 +90,8 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
|||||||
// out of the consumer's metadata compilations compile classpath; however, Native variants must expose implementation as API
|
// out of the consumer's metadata compilations compile classpath; however, Native variants must expose implementation as API
|
||||||
// anyway, so for now all fragments follow that behavior
|
// anyway, so for now all fragments follow that behavior
|
||||||
override val declaredModuleDependencies: Iterable<KotlinModuleDependency>
|
override val declaredModuleDependencies: Iterable<KotlinModuleDependency>
|
||||||
get() = listOf(apiConfiguration, implementationConfiguration).flatMapTo(mutableSetOf()) {
|
get() = listOf(apiConfiguration, implementationConfiguration).flatMapTo(mutableSetOf()) { exportConfiguration ->
|
||||||
it.allDependencies.map { it.toModuleDependency(project) }
|
exportConfiguration.allDependencies.map { dependency -> dependency.toModuleDependency(project) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override val kotlinSourceRoots: SourceDirectorySet =
|
override val kotlinSourceRoots: SourceDirectorySet =
|
||||||
|
|||||||
+1
-1
@@ -51,7 +51,7 @@ internal fun KotlinGradleVariant.ownModuleName(): String {
|
|||||||
return filterModuleName("$baseName$suffix")
|
return filterModuleName("$baseName$suffix")
|
||||||
}
|
}
|
||||||
|
|
||||||
class KotlinMappedJvmCompilationFactory(
|
internal class KotlinMappedJvmCompilationFactory(
|
||||||
target: KotlinJvmTarget
|
target: KotlinJvmTarget
|
||||||
) : KotlinJvmCompilationFactory(target) {
|
) : KotlinJvmCompilationFactory(target) {
|
||||||
override fun create(name: String): KotlinJvmCompilation {
|
override fun create(name: String): KotlinJvmCompilation {
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ internal open class KpmAwareTargetConfigurator<T : KotlinTarget>(
|
|||||||
private fun setupMavenPublicationDsl(target: T) {
|
private fun setupMavenPublicationDsl(target: T) {
|
||||||
if (target is AbstractKotlinTarget) {
|
if (target is AbstractKotlinTarget) {
|
||||||
target.compilations.all { compilation ->
|
target.compilations.all { compilation ->
|
||||||
val compilationDetails = (compilation as? AbstractKotlinCompilation)?.compilationDetails as? VariantMappedCompilationDetails
|
val compilationDetails = (compilation as? AbstractKotlinCompilation)?.compilationDetails
|
||||||
if (compilationDetails is VariantMappedCompilationDetails<*> && compilationDetails.variant.containingModule.isMain) {
|
if (compilationDetails is VariantMappedCompilationDetails<*> && compilationDetails.variant.containingModule.isMain) {
|
||||||
val variant = compilationDetails.variant
|
val variant = compilationDetails.variant
|
||||||
if (variant is SingleMavenPublishedModuleHolder) {
|
if (variant is SingleMavenPublishedModuleHolder) {
|
||||||
|
|||||||
+8
-5
@@ -40,15 +40,19 @@ internal open class LegacyMappedVariant(
|
|||||||
|
|
||||||
override val platformType: KotlinPlatformType
|
override val platformType: KotlinPlatformType
|
||||||
get() = compilation.platformType
|
get() = compilation.platformType
|
||||||
|
|
||||||
override val compileDependenciesConfiguration: Configuration
|
override val compileDependenciesConfiguration: Configuration
|
||||||
get() = project.configurations.getByName(compilation.compileDependencyConfigurationName)
|
get() = project.configurations.getByName(compilation.compileDependencyConfigurationName)
|
||||||
|
|
||||||
override var compileDependencyFiles: FileCollection
|
override var compileDependencyFiles: FileCollection
|
||||||
get() = compilation.compileDependencyFiles
|
get() = compilation.compileDependencyFiles
|
||||||
set(value) {
|
set(value) {
|
||||||
compilation.compileDependencyFiles = value
|
compilation.compileDependencyFiles = value
|
||||||
}
|
}
|
||||||
|
|
||||||
override val compilationOutputs: KotlinCompilationOutput
|
override val compilationOutputs: KotlinCompilationOutput
|
||||||
get() = compilation.output
|
get() = compilation.output
|
||||||
|
|
||||||
override val sourceArchiveTaskName: String
|
override val sourceArchiveTaskName: String
|
||||||
get() = defaultSourceArtifactTaskName // TODO: no such task yet
|
get() = defaultSourceArtifactTaskName // TODO: no such task yet
|
||||||
|
|
||||||
@@ -180,12 +184,11 @@ internal fun mapTargetCompilationsToKpmVariants(target: AbstractKotlinTarget, pu
|
|||||||
module.fragments.add(variant)
|
module.fragments.add(variant)
|
||||||
}
|
}
|
||||||
|
|
||||||
val whenPublicationShouldRegister: (() -> Unit) -> Unit = when (publicationRegistration) {
|
fun whenPublicationShouldRegister(action: () -> Unit) =
|
||||||
PublicationRegistrationMode.IMMEDIATE -> ::run
|
when (publicationRegistration) {
|
||||||
PublicationRegistrationMode.AFTER_EVALUATE -> {
|
PublicationRegistrationMode.IMMEDIATE -> action()
|
||||||
{ target.project.whenEvaluated { it() } }
|
PublicationRegistrationMode.AFTER_EVALUATE -> target.project.whenEvaluated { action() }
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
whenPublicationShouldRegister {
|
whenPublicationShouldRegister {
|
||||||
val mainModule = target.project.kpmModules.getByName(KotlinGradleModule.MAIN_MODULE_NAME)
|
val mainModule = target.project.kpmModules.getByName(KotlinGradleModule.MAIN_MODULE_NAME)
|
||||||
|
|||||||
+6
-7
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.gradle.tasks.registerTask
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||||
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
||||||
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
|
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
|
||||||
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
|
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
|
||||||
@@ -152,14 +153,12 @@ private fun configureMetadataJarTask(
|
|||||||
}
|
}
|
||||||
module.fragments.all { fragment ->
|
module.fragments.all { fragment ->
|
||||||
allMetadataJar.configure { jar ->
|
allMetadataJar.configure { jar ->
|
||||||
val metadataOutput = project.files(Callable {
|
val metadataOutput = project.filesProvider {
|
||||||
val compilationData = registry.getForFragmentOrNull(fragment)
|
val compilationData = registry.getForFragmentOrNull(fragment)
|
||||||
compilationData?.run {
|
.takeIf { !fragment.isNativeHostSpecific() }
|
||||||
if (!fragment.isNativeHostSpecific())
|
?: return@filesProvider emptyList<Any>()
|
||||||
project.filesWithUnpackedArchives(compilationData.output.allOutputs, setOf(KLIB_FILE_EXTENSION))
|
project.filesWithUnpackedArchives(compilationData.output.allOutputs, setOf(KLIB_FILE_EXTENSION))
|
||||||
else emptyList<Any>()
|
}
|
||||||
} ?: emptyList<Any>()
|
|
||||||
})
|
|
||||||
jar.from(metadataOutput) { spec ->
|
jar.from(metadataOutput) { spec ->
|
||||||
spec.into(fragment.fragmentName)
|
spec.into(fragment.fragmentName)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-10
@@ -27,16 +27,13 @@ internal class KpmMetadataTargetConfigurator(private val metadataTargetConfigura
|
|||||||
override fun configureCompilationDefaults(target: KotlinMetadataTarget) {
|
override fun configureCompilationDefaults(target: KotlinMetadataTarget) {
|
||||||
super.configureCompilationDefaults(target)
|
super.configureCompilationDefaults(target)
|
||||||
|
|
||||||
// we still want to configure the legacy "main" compilation
|
val mainCompilation = target.compilations.create(KotlinCompilation.MAIN_COMPILATION_NAME)
|
||||||
run {
|
defineConfigurationsForCompilation(mainCompilation)
|
||||||
val mainCompilation = target.compilations.create(KotlinCompilation.MAIN_COMPILATION_NAME)
|
createLifecycleTask(mainCompilation)
|
||||||
defineConfigurationsForCompilation(mainCompilation)
|
metadataTargetConfigurator
|
||||||
createLifecycleTask(mainCompilation)
|
.buildCompilationProcessor(mainCompilation)
|
||||||
metadataTargetConfigurator
|
.run()
|
||||||
.buildCompilationProcessor(mainCompilation)
|
mainCompilation.compileKotlinTaskProvider.configure { it.enabled = false }
|
||||||
.run()
|
|
||||||
mainCompilation.compileKotlinTaskProvider.configure { it.enabled = false }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun configureTargetWithKpm(target: KotlinMetadataTarget) {
|
private fun configureTargetWithKpm(target: KotlinMetadataTarget) {
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ internal fun dashSeparatedName(vararg nameParts: String?): String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun dashSeparatedLowercaseName(nameParts: Iterable<String?>) =
|
internal fun dashSeparatedLowercaseName(nameParts: Iterable<String?>) =
|
||||||
dashSeparatedName(*nameParts.toList().toTypedArray())
|
dashSeparatedLowercaseName(*nameParts.toList().toTypedArray())
|
||||||
|
|
||||||
internal fun dashSeparatedLowercaseName(vararg nameParts: String?): String {
|
internal fun dashSeparatedLowercaseName(vararg nameParts: String?): String {
|
||||||
val nonEmptyParts = nameParts.mapNotNull { it?.takeIf(String::isNotEmpty)?.toLowerCase(Locale.ENGLISH) }
|
val nonEmptyParts = nameParts.mapNotNull { it?.takeIf(String::isNotEmpty)?.toLowerCase(Locale.ENGLISH) }
|
||||||
|
|||||||
Reference in New Issue
Block a user