[Gradle] Implement ConfigureBuildSideEffect (replacing 'configureBuild')
KT-61634
This commit is contained in:
committed by
Space Team
parent
5676759287
commit
40820e42a6
-29
@@ -36,11 +36,9 @@ interface KotlinTargetConfigurator<KotlinTargetType : KotlinTarget> {
|
||||
) {
|
||||
target.runKotlinCompilationSideEffects()
|
||||
target.runKotlinTargetSideEffects()
|
||||
configureBuild(target)
|
||||
configurePlatformSpecificModel(target)
|
||||
}
|
||||
|
||||
fun configureBuild(target: KotlinTargetType)
|
||||
fun configurePlatformSpecificModel(target: KotlinTargetType) = Unit
|
||||
}
|
||||
|
||||
@@ -50,33 +48,6 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
|
||||
|
||||
protected open val runtimeIncludesCompilationOutputs = true
|
||||
|
||||
override fun configureBuild(target: KotlinTargetType) {
|
||||
val project = target.project
|
||||
|
||||
val buildNeeded = project.tasks.named(JavaBasePlugin.BUILD_NEEDED_TASK_NAME)
|
||||
val buildDependent = project.tasks.named(JavaBasePlugin.BUILD_DEPENDENTS_TASK_NAME)
|
||||
|
||||
if (createTestCompilation) {
|
||||
val testCompilation = target.compilations.getByName(KotlinCompilation.TEST_COMPILATION_NAME)
|
||||
if (testCompilation is KotlinCompilationToRunnableFiles) {
|
||||
addDependsOnTaskInOtherProjects(project, buildNeeded, true, testCompilation.runtimeDependencyConfigurationName)
|
||||
addDependsOnTaskInOtherProjects(project, buildDependent, false, testCompilation.runtimeDependencyConfigurationName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun addDependsOnTaskInOtherProjects(
|
||||
project: Project,
|
||||
taskProvider: TaskProvider<*>,
|
||||
useDependedOn: Boolean,
|
||||
configurationName: String,
|
||||
) {
|
||||
val configuration = project.configurations.getByName(configurationName)
|
||||
taskProvider.configure { task ->
|
||||
task.dependsOn(configuration.getTaskDependencyFromProjectDependency(useDependedOn, taskProvider.name))
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val testTaskNameSuffix = "test"
|
||||
const val runTaskNameSuffix = "run"
|
||||
|
||||
+3
@@ -56,6 +56,8 @@ import org.jetbrains.kotlin.gradle.plugin.sources.KotlinMultiplatformSourceSetSe
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.LanguageSettingsSetupAction
|
||||
import org.jetbrains.kotlin.gradle.plugin.statistics.MultiplatformBuildStatsReportSetupAction
|
||||
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubpluginSetupAction
|
||||
import org.jetbrains.kotlin.gradle.targets.*
|
||||
import org.jetbrains.kotlin.gradle.targets.ConfigureBuildSideEffect
|
||||
import org.jetbrains.kotlin.gradle.targets.CreateArtifactsSideEffect
|
||||
import org.jetbrains.kotlin.gradle.targets.CreateDefaultCompilationsSideEffect
|
||||
import org.jetbrains.kotlin.gradle.targets.CreateTargetConfigurationsSideEffect
|
||||
@@ -109,6 +111,7 @@ internal fun Project.registerKotlinPluginExtensions() {
|
||||
register(project, CreateTargetConfigurationsSideEffect)
|
||||
register(project, NativeForwardImplementationToApiElementsSideEffect)
|
||||
register(project, CreateArtifactsSideEffect)
|
||||
register(project, ConfigureBuildSideEffect)
|
||||
}
|
||||
|
||||
KotlinCompilationSideEffect.extensionPoint.apply {
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.targets
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.JavaBasePlugin
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationToRunnableFiles
|
||||
|
||||
internal val ConfigureBuildSideEffect = KotlinTargetSideEffect { target ->
|
||||
val project = target.project
|
||||
|
||||
val buildNeeded = project.tasks.named(JavaBasePlugin.BUILD_NEEDED_TASK_NAME)
|
||||
val buildDependent = project.tasks.named(JavaBasePlugin.BUILD_DEPENDENTS_TASK_NAME)
|
||||
|
||||
val testCompilation = target.compilations.findByName(KotlinCompilation.TEST_COMPILATION_NAME)
|
||||
@Suppress("DEPRECATION")
|
||||
if (testCompilation is KotlinCompilationToRunnableFiles) {
|
||||
addDependsOnTaskInOtherProjects(project, buildNeeded, true, testCompilation.runtimeDependencyConfigurationName)
|
||||
addDependsOnTaskInOtherProjects(project, buildDependent, false, testCompilation.runtimeDependencyConfigurationName)
|
||||
}
|
||||
}
|
||||
|
||||
private fun addDependsOnTaskInOtherProjects(
|
||||
project: Project,
|
||||
taskProvider: TaskProvider<*>,
|
||||
useDependedOn: Boolean,
|
||||
configurationName: String,
|
||||
) {
|
||||
val configuration = project.configurations.getByName(configurationName)
|
||||
taskProvider.configure { task ->
|
||||
task.dependsOn(configuration.getTaskDependencyFromProjectDependency(useDependedOn, taskProvider.name))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user