[Gradle, JS] Fix deprecation replace with on register task

This commit is contained in:
Ilya Goncharov
2019-12-26 14:26:04 +03:00
parent d0e2a653f7
commit 2f4f4dbbd8
2 changed files with 26 additions and 11 deletions
@@ -22,10 +22,7 @@ import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.plugins.MavenPluginConvention import org.gradle.api.plugins.MavenPluginConvention
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.tasks.CompileClasspathNormalizer import org.gradle.api.tasks.*
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.Upload
import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.api.tasks.compile.AbstractCompile
import org.gradle.api.tasks.compile.JavaCompile import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.jvm.tasks.Jar import org.gradle.jvm.tasks.Jar
@@ -39,6 +36,7 @@ import org.jetbrains.kotlin.gradle.logging.kotlinWarn
import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.tasks.*
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
@@ -311,12 +309,12 @@ internal class Kotlin2JsSourceSetProcessor(
private fun registerCleanSourceMapTask() { private fun registerCleanSourceMapTask() {
val taskName = kotlinCompilation.composeName("clean", "sourceMap") val taskName = kotlinCompilation.composeName("clean", "sourceMap")
project.createOrRegisterTask(taskName, { project.registerTask<Delete>(taskName) {
it.onlyIf { kotlinTask.get().kotlinOptions.sourceMap } it.onlyIf { kotlinTask.get().kotlinOptions.sourceMap }
it.delete(object : Closure<String>(this) { it.delete(object : Closure<String>(this) {
override fun call(): String? = (kotlinTask.get().property("outputFile") as File).canonicalPath + ".map" override fun call(): String? = (kotlinTask.get().property("outputFile") as File).canonicalPath + ".map"
}) })
}) }
project.tasks.findByName("clean")?.dependsOn(taskName) project.tasks.findByName("clean")?.dependsOn(taskName)
} }
} }
@@ -344,6 +342,21 @@ internal class KotlinJsIrSourceSetProcessor(
registerCleanSourceMapTask() registerCleanSourceMapTask()
val compilation = kotlinCompilation as KotlinJsIrCompilation
listOf(
compilation.productionCompileTaskName,
compilation.developmentCompileTaskName
).forEach { taskName ->
doRegisterTask(
project,
taskName
) {
it.description = taskDescription
it.mapClasspath { kotlinCompilation.compileDependencyFiles }
}
}
// outputFile can be set later during the configuration phase, get it only after the phase: // outputFile can be set later during the configuration phase, get it only after the phase:
project.runOnceAfterEvaluated("Kotlin2JsSourceSetProcessor.doTargetSpecificProcessing", kotlinTask) { project.runOnceAfterEvaluated("Kotlin2JsSourceSetProcessor.doTargetSpecificProcessing", kotlinTask) {
val kotlinTaskInstance = kotlinTask.get() val kotlinTaskInstance = kotlinTask.get()
@@ -373,7 +386,7 @@ internal class KotlinJsIrSourceSetProcessor(
private fun registerCleanSourceMapTask() { private fun registerCleanSourceMapTask() {
val taskName = kotlinCompilation.composeName("clean", "sourceMap") val taskName = kotlinCompilation.composeName("clean", "sourceMap")
project.createOrRegisterTask(taskName) { project.registerTask<Delete>(taskName) {
it.onlyIf { kotlinTask.get().kotlinOptions.sourceMap } it.onlyIf { kotlinTask.get().kotlinOptions.sourceMap }
it.delete(object : Closure<String>(this) { it.delete(object : Closure<String>(this) {
override fun call(): String? = (kotlinTask.get().property("outputFile") as File).canonicalPath + ".map" override fun call(): String? = (kotlinTask.get().property("outputFile") as File).canonicalPath + ".map"
@@ -511,12 +524,12 @@ internal abstract class AbstractKotlinPlugin(
return return
} }
val inspectTask = val inspectTask =
project.createOrRegisterTask("inspectClassesForKotlinIC", { project.registerTask<InspectClassesForMultiModuleIC>("inspectClassesForKotlinIC") {
it.sourceSetName = SourceSet.MAIN_SOURCE_SET_NAME it.sourceSetName = SourceSet.MAIN_SOURCE_SET_NAME
it.archivePath.set(project.provider { jarTask.archivePathCompatible.canonicalPath }) it.archivePath.set(project.provider { jarTask.archivePathCompatible.canonicalPath })
it.archiveName.set(project.provider { jarTask.archiveNameCompatible }) it.archiveName.set(project.provider { jarTask.archiveNameCompatible })
it.dependsOn(classesTask) it.dependsOn(classesTask)
}) }
jarTask.dependsOn(inspectTask) jarTask.dependsOn(inspectTask)
} }
@@ -20,15 +20,17 @@ import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.api.UnknownTaskException import org.gradle.api.UnknownTaskException
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.mapKotlinTaskProperties
import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.runOnceAfterEvaluated
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions
/** /**
* Registers the task with [name] and [type] and initialization script [body] * Registers the task with [name] and [type] and initialization script [body]
*/ */
@JvmName("registerTaskOld") @JvmName("registerTaskOld")
@Deprecated("please use Project.createOrRegisterTask", ReplaceWith("project.createOrRegisterTask(name, body)")) @Deprecated("please use Project.createOrRegisterTask", ReplaceWith("project.registerTask(name, type, emptyList(), body)"))
internal fun <T : Task> registerTask(project: Project, name: String, type: Class<T>, body: (T) -> (Unit)): TaskProvider<T> = internal fun <T : Task> registerTask(project: Project, name: String, type: Class<T>, body: (T) -> (Unit)): TaskProvider<T> =
project.registerTask(name, type, emptyList(), body) project.registerTask(name, type, emptyList(), body)