[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.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.tasks.CompileClasspathNormalizer
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.Upload
import org.gradle.api.tasks.*
import org.gradle.api.tasks.compile.AbstractCompile
import org.gradle.api.tasks.compile.JavaCompile
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.plugin.mpp.*
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.tasks.*
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
@@ -311,12 +309,12 @@ internal class Kotlin2JsSourceSetProcessor(
private fun registerCleanSourceMapTask() {
val taskName = kotlinCompilation.composeName("clean", "sourceMap")
project.createOrRegisterTask(taskName, {
project.registerTask<Delete>(taskName) {
it.onlyIf { kotlinTask.get().kotlinOptions.sourceMap }
it.delete(object : Closure<String>(this) {
override fun call(): String? = (kotlinTask.get().property("outputFile") as File).canonicalPath + ".map"
})
})
}
project.tasks.findByName("clean")?.dependsOn(taskName)
}
}
@@ -344,6 +342,21 @@ internal class KotlinJsIrSourceSetProcessor(
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:
project.runOnceAfterEvaluated("Kotlin2JsSourceSetProcessor.doTargetSpecificProcessing", kotlinTask) {
val kotlinTaskInstance = kotlinTask.get()
@@ -373,7 +386,7 @@ internal class KotlinJsIrSourceSetProcessor(
private fun registerCleanSourceMapTask() {
val taskName = kotlinCompilation.composeName("clean", "sourceMap")
project.createOrRegisterTask(taskName) {
project.registerTask<Delete>(taskName) {
it.onlyIf { kotlinTask.get().kotlinOptions.sourceMap }
it.delete(object : Closure<String>(this) {
override fun call(): String? = (kotlinTask.get().property("outputFile") as File).canonicalPath + ".map"
@@ -511,12 +524,12 @@ internal abstract class AbstractKotlinPlugin(
return
}
val inspectTask =
project.createOrRegisterTask("inspectClassesForKotlinIC", {
project.registerTask<InspectClassesForMultiModuleIC>("inspectClassesForKotlinIC") {
it.sourceSetName = SourceSet.MAIN_SOURCE_SET_NAME
it.archivePath.set(project.provider { jarTask.archivePathCompatible.canonicalPath })
it.archiveName.set(project.provider { jarTask.archiveNameCompatible })
it.dependsOn(classesTask)
})
}
jarTask.dependsOn(inspectTask)
}
@@ -20,15 +20,17 @@ import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.UnknownTaskException
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.runOnceAfterEvaluated
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions
/**
* Registers the task with [name] and [type] and initialization script [body]
*/
@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> =
project.registerTask(name, type, emptyList(), body)