diff --git a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanBuildingConfig.kt b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanBuildingConfig.kt index 68f0a36b7a5..b96167915bd 100644 --- a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanBuildingConfig.kt +++ b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanBuildingConfig.kt @@ -134,7 +134,7 @@ abstract class KonanBuildingConfig( dependsOn(it.value) } }.also { - project.compileAllTask.dependsOn(it) + project.compileAllTask.configure { dependsOn(it) } } protected fun createTargetAliasTaskIfDeclared(targetName: String): TaskProvider? { diff --git a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt index b20b89f1198..cee5f364225 100644 --- a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt +++ b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/KonanPlugin.kt @@ -32,6 +32,7 @@ import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal import org.gradle.api.tasks.Exec +import org.gradle.api.tasks.TaskProvider import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.jvm.toolchain.JavaLauncher import org.gradle.jvm.toolchain.JavaToolchainService @@ -135,9 +136,6 @@ internal val Project.konanTargets: List internal val Project.konanExtension: KonanExtension get() = extensions.getByName(KonanPlugin.KONAN_EXTENSION_NAME) as KonanExtension -internal val Project.konanCompilerDownloadTask - get() = tasks.getByName(KonanPlugin.KONAN_DOWNLOAD_TASK_NAME) - internal val Project.requestedTargets get() = findProperty(KonanPlugin.ProjectProperty.KONAN_BUILD_TARGETS)?.let { it.toString().trim().split("\\s+".toRegex()) @@ -147,22 +145,21 @@ internal val Project.jvmArgs get() = (findProperty(KonanPlugin.ProjectProperty.KONAN_JVM_ARGS) as String?)?.split("\\s+".toRegex()).orEmpty() internal val Project.compileAllTask - get() = getOrCreateTask(COMPILE_ALL_TASK_NAME) + get() = getOrRegisterTask(COMPILE_ALL_TASK_NAME) internal fun Project.targetIsRequested(target: KonanTarget): Boolean { val targets = requestedTargets return (targets.isEmpty() || targets.contains(target.visibleName) || targets.contains("all")) } -/** Looks for task with given name in the given project. Throws [UnknownTaskException] if there's not such task. */ -private fun Project.getTask(name: String): Task = tasks.getByPath(name) - /** * Looks for task with given name in the given project. - * If such task isn't found, will create it. Returns created/found task. + * If such task isn't found, will register it. Returns registered/found task. */ -private fun Project.getOrCreateTask(name: String): Task = with(tasks) { - findByPath(name) ?: create(name, DefaultTask::class.java) +private fun Project.getOrRegisterTask(name: String): TaskProvider = if (tasks.names.contains(name)) { + tasks.named(name) +} else { + tasks.register(name, DefaultTask::class.java) } internal fun Project.konanCompilerName(): String = @@ -309,8 +306,6 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR companion object { internal const val ARTIFACTS_CONTAINER_NAME = "konanArtifacts" - internal const val KONAN_DOWNLOAD_TASK_NAME = "checkKonanCompiler" - internal const val KONAN_GENERATE_CMAKE_TASK_NAME = "generateCMake" internal const val COMPILE_ALL_TASK_NAME = "compileKonan" internal const val KONAN_EXTENSION_NAME = "konan" @@ -372,15 +367,15 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR project.setProperty(ProjectProperty.DOWNLOAD_COMPILER, true) } - // Create and set up aggregate building tasks. - val compileKonanTask = project.getOrCreateTask(COMPILE_ALL_TASK_NAME).apply { + // Register and set up aggregate building tasks. + val compileKonanTask = project.getOrRegisterTask(COMPILE_ALL_TASK_NAME).configure { group = BasePlugin.BUILD_GROUP description = "Compiles all the Kotlin/Native artifacts" } - project.getTask("build").apply { + project.tasks.named("build").configure { dependsOn(compileKonanTask) } - project.getTask("clean").apply { + project.tasks.named("clean").configure { doLast { project.cleanKonan() } } @@ -406,13 +401,13 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR } } - val runTask = project.getOrCreateTask("run") + val runTask = project.getOrRegisterTask("run") project.afterEvaluate { project.konanArtifactsContainer .filterIsInstance(KonanProgram::class.java) .forEach { program -> program.tasks().forEach { compile -> - compile.configure { this@configure.runTask?.let { runTask.dependsOn(it) } } + compile.configure { this@configure.runTask?.let { runTask.configure { dependsOn(it) } } } } } } diff --git a/libraries/stdlib/common/build.gradle b/libraries/stdlib/common/build.gradle index aa3c812db07..75fe791eab9 100644 --- a/libraries/stdlib/common/build.gradle +++ b/libraries/stdlib/common/build.gradle @@ -1,6 +1,8 @@ -description = 'Kotlin Common Standard Library' +plugins { + id("kotlin-platform-common") +} -apply plugin: 'kotlin-platform-common' +description = 'Kotlin Common Standard Library' RepoArtifacts.publish(project) @@ -62,13 +64,13 @@ compileTestKotlinCommon { } } -jar { +tasks.named("jar", Jar) { LibrariesCommon.manifestAttributes(project, manifest, 'Main') } RepoArtifacts.sourcesJar(project) RepoArtifacts.javadocJar(project) -sourcesJar.dependsOn(":prepare:build.version:writeStdlibVersion") +tasks.named("sourcesJar").configure { it.dependsOn(":prepare:build.version:writeStdlibVersion") } classes.setDependsOn(classes.dependsOn.findAll { it != "compileJava" })