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()
|
checkAppBuild()
|
||||||
|
assertTasksExecuted(":resolveRuntimeDependencies") // KT-26301
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now run again with a project dependency instead of a module one:
|
// Now run again with a project dependency instead of a module one:
|
||||||
|
|||||||
+8
@@ -60,3 +60,11 @@ kotlin {
|
|||||||
fromPreset(presets.js, 'nodeJs')
|
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.dsl.kotlinExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.getSourceSetHierarchy
|
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.KonanCompilerDownloadTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
|
||||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||||
@@ -210,44 +209,24 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
|
|||||||
|
|
||||||
protected fun configureBuild(target: KotlinTargetType) {
|
protected fun configureBuild(target: KotlinTargetType) {
|
||||||
val project = target.project
|
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 {
|
val testCompilation = target.compilations.getByName(KotlinCompilation.TEST_COMPILATION_NAME)
|
||||||
setDescription("Assembles and tests this project and all projects that depend on it.")
|
val buildNeeded = project.tasks.getByName(JavaBasePlugin.BUILD_NEEDED_TASK_NAME)
|
||||||
setGroup("build")
|
val buildDependent = project.tasks.getByName(JavaBasePlugin.BUILD_DEPENDENTS_TASK_NAME)
|
||||||
dependsOn("build")
|
|
||||||
doFirst {
|
if (testCompilation is KotlinCompilationToRunnableFiles) {
|
||||||
if (!project.gradle.includedBuilds.isEmpty()) {
|
addDependsOnTaskInOtherProjects(buildNeeded, true, testCompilation.deprecatedRuntimeConfigurationName)
|
||||||
project.logger.warn("[composite-build] Warning: `" + path + "` task does not build included builds.")
|
addDependsOnTaskInOtherProjects(buildDependent, false, testCompilation.deprecatedRuntimeConfigurationName)
|
||||||
}
|
|
||||||
}
|
|
||||||
if (testCompilation is KotlinCompilationToRunnableFiles) {
|
|
||||||
addDependsOnTaskInOtherProjects(this@apply, false, name, testCompilation.deprecatedRuntimeConfigurationName)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addDependsOnTaskInOtherProjects(
|
private fun addDependsOnTaskInOtherProjects(task: Task, useDependedOn: Boolean, configurationName: String) {
|
||||||
task: Task, useDependedOn: Boolean, otherProjectTaskName: String,
|
|
||||||
configurationName: String
|
|
||||||
) {
|
|
||||||
val project = task.project
|
val project = task.project
|
||||||
val configuration = project.configurations.getByName(configurationName)
|
val configuration = project.configurations.getByName(configurationName)
|
||||||
task.dependsOn(configuration.getTaskDependencyFromProjectDependency(useDependedOn, otherProjectTaskName))
|
task.dependsOn(configuration.getTaskDependencyFromProjectDependency(useDependedOn, task.name))
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val buildNeededTaskName = "buildAllNeeded"
|
|
||||||
const val buildDependentTaskName = "buildAllDependents"
|
|
||||||
|
|
||||||
const val testTaskNameSuffix = "test"
|
const val testTaskNameSuffix = "test"
|
||||||
|
|
||||||
fun defineConfigurationsForCompilation(
|
fun defineConfigurationsForCompilation(
|
||||||
@@ -333,13 +312,6 @@ open class KotlinTargetConfigurator<KotlinCompilationType: KotlinCompilation>(
|
|||||||
buildOutputCleanupRegistry: BuildOutputCleanupRegistry
|
buildOutputCleanupRegistry: BuildOutputCleanupRegistry
|
||||||
) : AbstractKotlinTargetConfigurator<KotlinOnlyTarget<KotlinCompilationType>>(buildOutputCleanupRegistry) {
|
) : AbstractKotlinTargetConfigurator<KotlinOnlyTarget<KotlinCompilationType>>(buildOutputCleanupRegistry) {
|
||||||
|
|
||||||
override fun configureTarget(
|
|
||||||
target: KotlinOnlyTarget<KotlinCompilationType>
|
|
||||||
) {
|
|
||||||
super.configureTarget(target)
|
|
||||||
setCompatibilityOfAbstractCompileTasks(target.project)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun configureArchivesAndComponent(target: KotlinOnlyTarget<KotlinCompilationType>) {
|
override fun configureArchivesAndComponent(target: KotlinOnlyTarget<KotlinCompilationType>) {
|
||||||
val project = target.project
|
val project = target.project
|
||||||
|
|
||||||
@@ -381,14 +353,6 @@ open class KotlinTargetConfigurator<KotlinCompilationType: KotlinCompilation>(
|
|||||||
publications.artifacts.add(jarArtifact)
|
publications.artifacts.add(jarArtifact)
|
||||||
publications.attributes.attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.JAR_TYPE)
|
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.attributes.AttributeContainer
|
||||||
import org.gradle.api.internal.file.FileResolver
|
import org.gradle.api.internal.file.FileResolver
|
||||||
import org.gradle.api.internal.plugins.DslObject
|
import org.gradle.api.internal.plugins.DslObject
|
||||||
import org.gradle.api.plugins.BasePlugin
|
import org.gradle.api.plugins.JavaBasePlugin
|
||||||
import org.gradle.api.plugins.ReportingBasePlugin
|
|
||||||
import org.gradle.api.publish.PublishingExtension
|
import org.gradle.api.publish.PublishingExtension
|
||||||
import org.gradle.api.publish.maven.MavenPublication
|
import org.gradle.api.publish.maven.MavenPublication
|
||||||
import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal
|
import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal
|
||||||
@@ -51,8 +50,7 @@ class KotlinMultiplatformPlugin(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
project.plugins.apply(BasePlugin::class.java)
|
project.plugins.apply(JavaBasePlugin::class.java)
|
||||||
project.plugins.apply(ReportingBasePlugin::class.java)
|
|
||||||
|
|
||||||
val targetsContainer = project.container(KotlinTarget::class.java)
|
val targetsContainer = project.container(KotlinTarget::class.java)
|
||||||
val targetsFromPreset = TargetFromPresetExtension(targetsContainer)
|
val targetsFromPreset = TargetFromPresetExtension(targetsContainer)
|
||||||
|
|||||||
Reference in New Issue
Block a user