Move call to kotlinTask.source to doTargetSpecificProcessing

This commit is contained in:
Alexey Tsvetkov
2016-07-28 18:04:20 +03:00
parent ad1340caf3
commit 2cae5f01cf
@@ -61,9 +61,9 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
protected val sourceSetName: String = sourceSet.name
protected val sourceRootDir: String = "src/${sourceSetName}/kotlin"
protected val absoluteSourceRootDir: String = project.projectDir.path + "/" + sourceRootDir
protected val kotlinSourceSet: KotlinSourceSet? by lazy { createKotlinSourceSet() }
protected val kotlinDirSet: SourceDirectorySet? by lazy { createKotlinDirSet() }
protected val kotlinTask: T by lazy { createKotlinCompileTask() }
protected val kotlinSourceSet: KotlinSourceSet? = createKotlinSourceSet()
protected val kotlinDirSet: SourceDirectorySet? = createKotlinDirSet()
protected val kotlinTask: T = createKotlinCompileTask()
protected val kotlinTaskName: String by lazy { kotlinTask.name }
public fun run() {
@@ -71,11 +71,10 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
return
}
addKotlinDirSetToSources()
commonTaskConfiguration()
doTargetSpecificProcessing()
}
open protected fun createKotlinSourceSet(): KotlinSourceSet? =
private fun createKotlinSourceSet(): KotlinSourceSet? =
if (sourceSet is HasConvention) {
logger.kotlinDebug("Creating KotlinSourceSet for source set ${sourceSet}")
val kotlinSourceSet = KotlinSourceSetImpl(sourceSet.name, project.fileResolver)
@@ -85,7 +84,7 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
null
}
open protected fun createKotlinDirSet(): SourceDirectorySet? {
private fun createKotlinDirSet(): SourceDirectorySet? {
val srcDir = project.file(sourceRootDir)
logger.kotlinDebug("Creating Kotlin SourceDirectorySet for source set $kotlinSourceSet with src dir $srcDir")
val kotlinDirSet = kotlinSourceSet?.getKotlin()
@@ -100,20 +99,15 @@ abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
sourceSet.resources?.filter?.exclude { kotlinDirSet!!.contains(it.file) }
}
open protected fun createKotlinCompileTask(suffix: String = ""): T {
private fun createKotlinCompileTask(suffix: String = ""): T {
val name = sourceSet.getCompileTaskName(compileTaskNameSuffix) + suffix
logger.kotlinDebug("Creating kotlin compile task $name")
val kotlinCompile = doCreateTask(project, name)
kotlinCompile.description = taskDescription
kotlinCompile.extensions.extraProperties.set("defaultModuleName", "${project.name}-$name")
return kotlinCompile
}
open protected fun commonTaskConfiguration() {
javaBasePlugin.configureForSourceSet(sourceSet, kotlinTask)
kotlinTask.description = taskDescription
kotlinTask.source(kotlinDirSet)
}
protected abstract fun doCreateTask(project: Project, taskName: String): T
}
@@ -151,10 +145,6 @@ class Kotlin2JvmSourceSetProcessor(
if (project != null) {
kotlinTask.destinationDir = File(project.buildDir, "kotlin-classes/$sourceSetName")
for (dir in sourceSet.java.srcDirs) {
kotlinDirSet?.srcDir(dir)
}
val subpluginEnvironment = loadSubplugins(project)
subpluginEnvironment.addSubpluginArguments(project, kotlinTask)
@@ -174,6 +164,10 @@ class Kotlin2JvmSourceSetProcessor(
kotlinAfterJavaTask = project.initKapt(kotlinTask, javaTask, kaptManager, sourceSetName, null, subpluginEnvironment, tasksProvider)
}
sourceSet.java.srcDirs.forEach { kotlinDirSet?.srcDir(it) }
// KotlinCompile.source(kotlinDirSet) should be called only after all java roots are added to kotlinDirSet
// otherwise some java roots can be ignored
kotlinTask.source(kotlinDirSet)
kotlinAfterJavaTask?.let { it.source(kotlinDirSet) }
configureJavaTask(kotlinTask, javaTask, kotlinAfterJavaTask, logger)
createSyncOutputTask(project, kotlinTask, javaTask, kotlinAfterJavaTask, sourceSetName)
@@ -217,6 +211,7 @@ class Kotlin2JsSourceSetProcessor(
kotlinTask.destinationDir = defaultKotlinDestinationDir
build?.dependsOn(kotlinTaskName)
clean?.dependsOn("clean" + kotlinTaskName.capitalize())
kotlinTask.source(kotlinDirSet)
createCleanSourceMapTask()
}