Always apply the java-base plugin from the new MPP plugin
This fixes misconfigured test tasks and the `Usage` attribute compatibility rule missing that is added by `java-base`. Issue #KT-26301 Fixed
This commit is contained in:
+2
-1
@@ -89,8 +89,9 @@ class NewMultiplatformIT : BaseGradleIT() {
|
||||
}
|
||||
}
|
||||
|
||||
build("assemble") {
|
||||
build("assemble", "resolveRuntimeDependencies") {
|
||||
checkAppBuild()
|
||||
assertTasksExecuted(":resolveRuntimeDependencies") // KT-26301
|
||||
}
|
||||
|
||||
// Now run again with a project dependency instead of a module one:
|
||||
|
||||
+8
@@ -59,4 +59,12 @@ kotlin {
|
||||
}
|
||||
fromPreset(presets.js, 'nodeJs')
|
||||
}
|
||||
}
|
||||
|
||||
task resolveRuntimeDependencies(type: DefaultTask) {
|
||||
doFirst {
|
||||
// KT-26301
|
||||
def configName = kotlin.targets.jvm6.compilations.main.runtimeDependencyConfigurationName
|
||||
configurations[configName].resolve()
|
||||
}
|
||||
}
|
||||
+9
-45
@@ -32,7 +32,6 @@ import org.gradle.nativeplatform.test.tasks.RunTestExecutable
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.getSourceSetHierarchy
|
||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.KonanCompilerDownloadTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
@@ -210,44 +209,24 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
|
||||
|
||||
protected fun configureBuild(target: KotlinTargetType) {
|
||||
val project = target.project
|
||||
val testCompilation = target.compilations.getByName(KotlinCompilation.TEST_COMPILATION_NAME)
|
||||
project.tasks.maybeCreate(buildNeededTaskName, DefaultTask::class.java).apply {
|
||||
description = "Assembles and tests this project and all projects it depends on."
|
||||
group = "build"
|
||||
dependsOn("build")
|
||||
if (testCompilation is KotlinCompilationToRunnableFiles) {
|
||||
addDependsOnTaskInOtherProjects(this@apply, true, name, testCompilation.deprecatedRuntimeConfigurationName)
|
||||
}
|
||||
}
|
||||
|
||||
project.tasks.maybeCreate(buildDependentTaskName, DefaultTask::class.java).apply {
|
||||
setDescription("Assembles and tests this project and all projects that depend on it.")
|
||||
setGroup("build")
|
||||
dependsOn("build")
|
||||
doFirst {
|
||||
if (!project.gradle.includedBuilds.isEmpty()) {
|
||||
project.logger.warn("[composite-build] Warning: `" + path + "` task does not build included builds.")
|
||||
}
|
||||
}
|
||||
if (testCompilation is KotlinCompilationToRunnableFiles) {
|
||||
addDependsOnTaskInOtherProjects(this@apply, false, name, testCompilation.deprecatedRuntimeConfigurationName)
|
||||
}
|
||||
val testCompilation = target.compilations.getByName(KotlinCompilation.TEST_COMPILATION_NAME)
|
||||
val buildNeeded = project.tasks.getByName(JavaBasePlugin.BUILD_NEEDED_TASK_NAME)
|
||||
val buildDependent = project.tasks.getByName(JavaBasePlugin.BUILD_DEPENDENTS_TASK_NAME)
|
||||
|
||||
if (testCompilation is KotlinCompilationToRunnableFiles) {
|
||||
addDependsOnTaskInOtherProjects(buildNeeded, true, testCompilation.deprecatedRuntimeConfigurationName)
|
||||
addDependsOnTaskInOtherProjects(buildDependent, false, testCompilation.deprecatedRuntimeConfigurationName)
|
||||
}
|
||||
}
|
||||
|
||||
private fun addDependsOnTaskInOtherProjects(
|
||||
task: Task, useDependedOn: Boolean, otherProjectTaskName: String,
|
||||
configurationName: String
|
||||
) {
|
||||
private fun addDependsOnTaskInOtherProjects(task: Task, useDependedOn: Boolean, configurationName: String) {
|
||||
val project = task.project
|
||||
val configuration = project.configurations.getByName(configurationName)
|
||||
task.dependsOn(configuration.getTaskDependencyFromProjectDependency(useDependedOn, otherProjectTaskName))
|
||||
task.dependsOn(configuration.getTaskDependencyFromProjectDependency(useDependedOn, task.name))
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val buildNeededTaskName = "buildAllNeeded"
|
||||
const val buildDependentTaskName = "buildAllDependents"
|
||||
|
||||
const val testTaskNameSuffix = "test"
|
||||
|
||||
fun defineConfigurationsForCompilation(
|
||||
@@ -333,13 +312,6 @@ open class KotlinTargetConfigurator<KotlinCompilationType: KotlinCompilation>(
|
||||
buildOutputCleanupRegistry: BuildOutputCleanupRegistry
|
||||
) : AbstractKotlinTargetConfigurator<KotlinOnlyTarget<KotlinCompilationType>>(buildOutputCleanupRegistry) {
|
||||
|
||||
override fun configureTarget(
|
||||
target: KotlinOnlyTarget<KotlinCompilationType>
|
||||
) {
|
||||
super.configureTarget(target)
|
||||
setCompatibilityOfAbstractCompileTasks(target.project)
|
||||
}
|
||||
|
||||
override fun configureArchivesAndComponent(target: KotlinOnlyTarget<KotlinCompilationType>) {
|
||||
val project = target.project
|
||||
|
||||
@@ -381,14 +353,6 @@ open class KotlinTargetConfigurator<KotlinCompilationType: KotlinCompilation>(
|
||||
publications.artifacts.add(jarArtifact)
|
||||
publications.attributes.attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.JAR_TYPE)
|
||||
}
|
||||
|
||||
private fun setCompatibilityOfAbstractCompileTasks(project: Project) = with (project) {
|
||||
tasks.withType(AbstractKotlinCompile::class.java).all {
|
||||
// Workaround: these are input properties and should not hold null values:
|
||||
it.targetCompatibility = ""
|
||||
it.sourceCompatibility = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-4
@@ -13,8 +13,7 @@ import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.internal.file.FileResolver
|
||||
import org.gradle.api.internal.plugins.DslObject
|
||||
import org.gradle.api.plugins.BasePlugin
|
||||
import org.gradle.api.plugins.ReportingBasePlugin
|
||||
import org.gradle.api.plugins.JavaBasePlugin
|
||||
import org.gradle.api.publish.PublishingExtension
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal
|
||||
@@ -51,8 +50,7 @@ class KotlinMultiplatformPlugin(
|
||||
}
|
||||
|
||||
override fun apply(project: Project) {
|
||||
project.plugins.apply(BasePlugin::class.java)
|
||||
project.plugins.apply(ReportingBasePlugin::class.java)
|
||||
project.plugins.apply(JavaBasePlugin::class.java)
|
||||
|
||||
val targetsContainer = project.container(KotlinTarget::class.java)
|
||||
val targetsFromPreset = TargetFromPresetExtension(targetsContainer)
|
||||
|
||||
Reference in New Issue
Block a user