Fix CCE when creating kotlin-js task in gradle plugin

This commit is contained in:
Alexey Tsvetkov
2016-06-20 16:48:45 +03:00
parent 453ee55615
commit 34181402fb
@@ -45,11 +45,10 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
val project: ProjectInternal,
val javaBasePlugin: JavaBasePlugin,
val sourceSet: SourceSet,
val tasksProvider: KotlinTasksProvider,
val pluginName: String,
val compileTaskNameSuffix: String,
val taskDescription: String,
val compilerClass: Class<T>,
val tasksProvider: KotlinTasksProvider
val taskDescription: String
) {
abstract protected fun doTargetSpecificProcessing()
val logger = Logging.getLogger(this.javaClass)
@@ -98,10 +97,10 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
open protected fun createKotlinCompileTask(suffix: String = ""): T {
val name = sourceSet.getCompileTaskName(compileTaskNameSuffix) + suffix
logger.kotlinDebug("Creating kotlin compile task $name with class $compilerClass")
val compile = tasksProvider.createKotlinJVMTask(project, name)
compile.extensions.extraProperties.set("defaultModuleName", "${project.name}-$name")
return compilerClass.cast(compile)
logger.kotlinDebug("Creating kotlin compile task $name")
val kotlinCompile = doCreateTask(project, name)
kotlinCompile.extensions.extraProperties.set("defaultModuleName", "${project.name}-$name")
return kotlinCompile
}
open protected fun commonTaskConfiguration() {
@@ -110,6 +109,8 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
kotlinTask.source(kotlinDirSet)
mapKotlinTaskProperties(project, kotlinTask)
}
protected abstract fun doCreateTask(project: Project, taskName: String): T
}
class Kotlin2JvmSourceSetProcessor(
@@ -119,18 +120,19 @@ class Kotlin2JvmSourceSetProcessor(
val scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider
) : KotlinSourceSetProcessor<AbstractCompile>(
project, javaBasePlugin, sourceSet,
project, javaBasePlugin, sourceSet, tasksProvider,
pluginName = "kotlin",
compileTaskNameSuffix = "kotlin",
taskDescription = "Compiles the $sourceSet.kotlin.",
compilerClass = tasksProvider.kotlinJVMCompileTaskClass,
tasksProvider = tasksProvider
taskDescription = "Compiles the $sourceSet.kotlin."
) {
private companion object {
private var cachedKotlinAnnotationProcessingDep: String? = null
}
override fun doCreateTask(project: Project, taskName: String): AbstractCompile =
tasksProvider.createKotlinJVMTask(project, taskName)
override fun doTargetSpecificProcessing() {
val kotlinAnnotationProcessingDep = cachedKotlinAnnotationProcessingDep ?: run {
val projectVersion = loadKotlinVersionFromResource(project.logger)
@@ -190,12 +192,10 @@ class Kotlin2JsSourceSetProcessor(
val scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider
) : KotlinSourceSetProcessor<AbstractCompile>(
project, javaBasePlugin, sourceSet,
project, javaBasePlugin, sourceSet, tasksProvider,
pluginName = "kotlin2js",
taskDescription = "Compiles the kotlin sources in $sourceSet to JavaScript.",
compileTaskNameSuffix = "kotlin2Js",
compilerClass = tasksProvider.kotlinJSCompileTaskClass,
tasksProvider = tasksProvider
compileTaskNameSuffix = "kotlin2Js"
) {
val copyKotlinJsTaskName = sourceSet.getTaskName("copy", "kotlinJs")
@@ -213,6 +213,9 @@ class Kotlin2JsSourceSetProcessor(
private fun shouldGenerateSourceMap() = kotlinTask.property("sourceMap")
override fun doCreateTask(project: Project, taskName: String): AbstractCompile =
tasksProvider.createKotlinJSTask(project, taskName)
override fun doTargetSpecificProcessing() {
kotlinTask.kotlinDestinationDir = defaultKotlinDestinationDir
build?.dependsOn(kotlinTaskName)