diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 89cd145bbde..ad713990006 100644 --- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -47,9 +47,6 @@ abstract class AbstractKotlinCompile() : AbstractCo private val logger = Logging.getLogger(this.javaClass) override fun getLogger() = logger - var compilerPluginClasspaths: Array = array() - var compilerPluginArguments: Array = array() - [TaskAction] override fun compile() { getLogger().debug("Starting ${javaClass} task") @@ -104,8 +101,8 @@ public open class KotlinCompile() : AbstractKotlinCompile() override fun populateTargetSpecificArgs(args: K2JVMCompilerArguments) { - args.pluginClasspaths = compilerPluginClasspaths - args.pluginOptions = compilerPluginArguments + args.pluginClasspaths = property("compilerPluginClasspaths") as? Array + args.pluginOptions = property("compilerPluginArguments") as? Array if (StringUtils.isEmpty(kotlinOptions.classpath)) { val existingClasspathEntries = getClasspath().filter({ it != null && it.exists() }) 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 d3f13583468..f30e5648b25 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 @@ -451,30 +451,25 @@ private class SubpluginEnvironment( val subplugins: List ) { - private fun AbstractCompile.setKotlinTaskProperty(methodName: String, value: Array) { - val function = javaClass.getMethod(methodName, javaClass>()) - function.invoke(this, value) - } - fun addSubpluginArguments(project: Project, compileTask: AbstractCompile) { val realPluginClasspaths = arrayListOf() val pluginArguments = arrayListOf() + fun getPluginOptionString(pluginId: String, key: String, value: String) = "plugin:$pluginId:$key=$value" subplugins.forEach { subplugin -> val args = subplugin.getExtraArguments(project, compileTask) - if (args != null) { - realPluginClasspaths.addAll(subpluginClasspaths[subplugin]) + val subpluginClasspath = subpluginClasspaths[subplugin] + if (args != null && subpluginClasspath != null) { + realPluginClasspaths.addAll(subpluginClasspath) for (arg in args) { - //TODO: fix (getPluginOptionString is in plugin-api) - fun getPluginOptionString(pluginId: String, key: String, value: String) = "plugin:$pluginId:$key=$value" val option = getPluginOptionString(subplugin.getPluginName(), arg.key, arg.value) pluginArguments.add(option) } } } - compileTask.setKotlinTaskProperty("setCompilerPluginClasspaths", realPluginClasspaths.copyToArray()) - compileTask.setKotlinTaskProperty("setCompilerPluginArguments", pluginArguments.copyToArray()) + compileTask.setProperty("compilerPluginClasspaths", realPluginClasspaths.copyToArray()) + compileTask.setProperty("compilerPluginArguments", pluginArguments.copyToArray()) } }