From 8b5279897fb3e03995a7e7a559cbca93211f06e5 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Wed, 21 Jan 2015 11:08:09 +0300 Subject: [PATCH] Gradle: fix kotlinOptions for kotlin-android plugin --- .../org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt | 9 ++++++--- .../org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 864b424589b..325184a298e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -273,6 +273,8 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t } }) + (ext as ExtensionAware).getExtensions().add("kotlinOptions", tasksProvider.kotlinJVMOptionsClass) + project afterEvaluate { project -> if (project != null) { val testVariants = ext.getTestVariants()!! @@ -294,7 +296,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t private fun processVariants(variants: DefaultDomainObjectSet, project: Project, androidExt: BaseExtension): Unit { val logger = project.getLogger() - val kotlinOptions = getExtension(androidExt, "kotlinOptions") + val kotlinOptions = getExtension(androidExt, "kotlinOptions") val sourceSets = androidExt.getSourceSets() //TODO: change to BuilderConstants.MAIN - it was relocated in 0.11 plugin val mainSourceSet = sourceSets.getByName("main") @@ -316,8 +318,9 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t val kotlinTaskName = "compile${variantName.capitalize()}Kotlin" val kotlinTask = tasksProvider.createKotlinJVMTask(project, kotlinTaskName) - kotlinTask.setProperty("kotlinOptions", kotlinOptions) - + if (kotlinOptions != null) { + kotlinTask.setProperty("kotlinOptions", kotlinOptions) + } // store kotlin classes in separate directory. They will serve as class-path to java compiler val kotlinOutputDir = File(project.getBuildDir(), "tmp/kotlin-classes/${variantName}") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt index 048fbf3b1d4..26aeff3dbc1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt @@ -22,6 +22,9 @@ public open class KotlinTasksProvider(val tasksLoader: ClassLoader) { val kDocTaskClass: Class = tasksLoader.loadClass("org.jetbrains.kotlin.gradle.tasks.KDoc") as Class + val kotlinJVMOptionsClass: Class = + tasksLoader.loadClass("org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments") as Class + public fun createKotlinJVMTask(project: Project, name: String): AbstractCompile { return project.getTasks().create(name, kotlinJVMCompileTaskClass)