[Gradle] Implement UserDefinedAttributesSetupAction
KT-61634
This commit is contained in:
committed by
Space Team
parent
c22a7bf802
commit
822cb7f545
-2
@@ -62,8 +62,6 @@ internal abstract class AbstractKotlinPlugin(
|
||||
{ compilation -> buildSourceSetProcessor(project, compilation) }
|
||||
)
|
||||
|
||||
applyUserDefinedAttributes(target)
|
||||
|
||||
rewriteMppDependenciesInPom(target)
|
||||
|
||||
configureProjectGlobalSettings(project)
|
||||
|
||||
-2
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
|
||||
import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinJvmPlugin.Companion.configureCompilerOptionsForTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.applyUserDefinedAttributes
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.whenEvaluated
|
||||
import org.jetbrains.kotlin.gradle.utils.androidPluginIds
|
||||
@@ -55,7 +54,6 @@ internal open class KotlinAndroidPlugin(
|
||||
}
|
||||
}
|
||||
) { androidTarget ->
|
||||
applyUserDefinedAttributes(androidTarget)
|
||||
customizeKotlinDependencies(project)
|
||||
registry.register(KotlinModelBuilder(project.getKotlinPluginVersion(), androidTarget))
|
||||
project.whenEvaluated { project.components.addAll(androidTarget.components) }
|
||||
|
||||
-2
@@ -50,8 +50,6 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
|
||||
project.registerKotlinArtifactsExtension()
|
||||
|
||||
configurePublishingWithMavenPublish(project)
|
||||
|
||||
kotlinMultiplatformExtension.targets.withType(InternalKotlinTarget::class.java).all { applyUserDefinedAttributes(it) }
|
||||
}
|
||||
|
||||
|
||||
|
||||
+9
-3
@@ -5,10 +5,15 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterEvaluateBuildscript
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinProjectSetupCoroutine
|
||||
import org.jetbrains.kotlin.gradle.plugin.await
|
||||
import org.jetbrains.kotlin.gradle.plugin.launchInStage
|
||||
import org.jetbrains.kotlin.gradle.utils.copyAttributes
|
||||
import org.jetbrains.kotlin.gradle.utils.forAllTargets
|
||||
import org.jetbrains.kotlin.gradle.utils.targets
|
||||
|
||||
|
||||
/**
|
||||
@@ -16,9 +21,10 @@ import org.jetbrains.kotlin.gradle.utils.copyAttributes
|
||||
* 1. Output configurations of each target need the corresponding compilation's attributes (and, indirectly, the target's attributes)
|
||||
* 2. Resolvable configurations of each compilation need the compilation's attributes
|
||||
*/
|
||||
internal fun applyUserDefinedAttributes(target: InternalKotlinTarget) {
|
||||
target.project.launchInStage(AfterEvaluateBuildscript) {
|
||||
target.kotlinComponents.flatMap { it.internal.usages }.forEach { usage ->
|
||||
internal val UserDefinedAttributesSetupAction = KotlinProjectSetupCoroutine {
|
||||
AfterEvaluateBuildscript.await()
|
||||
kotlinExtension.forAllTargets { target ->
|
||||
target.internal.kotlinComponents.flatMap { it.internal.usages }.forEach { usage ->
|
||||
val dependencyConfiguration = target.project.configurations.findByName(usage.dependencyConfigurationName) ?: return@forEach
|
||||
copyAttributes(usage.compilation.attributes, dependencyConfiguration.attributes)
|
||||
}
|
||||
|
||||
+6
-1
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImportSetupAction
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeResolveDependenciesTaskSetupAction
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.GlobalProjectStructureMetadataStorageSetupAction
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.SyncLanguageSettingsWithKotlinExtensionSetupAction
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.UserDefinedAttributesSetupAction
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.AddBuildListenerForXCodeSetupAction
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.LanguageSettingsSetupAction
|
||||
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubpluginSetupAction
|
||||
@@ -50,6 +51,8 @@ internal fun Project.registerKotlinPluginExtensions() {
|
||||
register(project, RegisterBuildKotlinToolingMetadataTask)
|
||||
register(project, KotlinToolingDiagnosticsSetupAction)
|
||||
register(project, SyncLanguageSettingsWithKotlinExtensionSetupAction)
|
||||
register(project, UserDefinedAttributesSetupAction)
|
||||
|
||||
|
||||
if (isJvm || isMultiplatform) {
|
||||
register(project, ScriptingGradleSubpluginSetupAction)
|
||||
@@ -99,4 +102,6 @@ private val Project.isMultiplatform get() = multiplatformExtensionOrNull != null
|
||||
|
||||
private val Project.isJvm get() = kotlinJvmExtensionOrNull != null
|
||||
|
||||
private val Project.isJs get() = kotlinExtensionOrNull is KotlinJsProjectExtension
|
||||
private val Project.isJs get() = kotlinExtensionOrNull is KotlinJsProjectExtension
|
||||
|
||||
private val Project.isAndroid get() = kotlinExtension is KotlinAndroidProjectExtension
|
||||
+9
@@ -16,3 +16,12 @@ internal val KotlinProjectExtension.targets: Iterable<KotlinTarget>
|
||||
is KotlinMultiplatformExtension -> targets
|
||||
else -> error("Unexpected 'kotlin' extension $this")
|
||||
}
|
||||
|
||||
|
||||
internal fun KotlinProjectExtension.forAllTargets(action: (target: KotlinTarget) -> Unit) {
|
||||
when (this) {
|
||||
is KotlinSingleTargetExtension<*> -> action(this.target)
|
||||
is KotlinMultiplatformExtension -> targets.all(action)
|
||||
else -> error("Unexpected 'kotlin' extension $this")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user