From 16ae313b2205cdc570069495d8efb41b7770927b Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 28 Mar 2019 19:22:14 +0100 Subject: [PATCH] Apply scripting subplugin in gradle mpp plugin, so scripts could be added to mpp sources #KT-30679 fixed --- .../jetbrains/kotlin/gradle/NewMultiplatformIT.kt | 1 + .../new-mpp-lib-with-tests/build.gradle | 3 ++- .../build.gradle.kts.alternative | 1 + .../src/jvmWithoutJavaMain/kotlin/script.kts | 2 ++ .../plugin/mpp/KotlinMultiplatformPlugin.kt | 3 +++ .../internal/ScriptingGradleSubplugin.kt | 15 ++++++++++----- 6 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/src/jvmWithoutJavaMain/kotlin/script.kts diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index fe36cb5bd47..bc2295269a2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -398,6 +398,7 @@ class NewMultiplatformIT : BaseGradleIT() { arrayOf( it + "com/example/lib/CommonKt.class", it + "com/example/lib/MainKt.class", + it + "Script.class", it + "META-INF/new-mpp-lib-with-tests.kotlin_module" ) }, diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/build.gradle index d41bef549b4..013d617c375 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/build.gradle @@ -37,7 +37,8 @@ kotlin { } configure([main, jvmWithoutJavaMain]) { dependencies { - implementation 'org.jetbrains.kotlin:kotlin-stdlib' + implementation 'org.jetbrains.kotlin:kotlin-stdlib' + implementation 'org.jetbrains.kotlin:kotlin-script-runtime' } } configure([test, jvmWithoutJavaTest]) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/build.gradle.kts.alternative b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/build.gradle.kts.alternative index 0ef2ee4bd2f..256d5369d45 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/build.gradle.kts.alternative +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/build.gradle.kts.alternative @@ -29,6 +29,7 @@ kotlin { configure(listOf(main, jvmWithoutJavaMain)) { dependencies { implementation(kotlin("stdlib")) + implementation(kotlin("script-runtime")) } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/src/jvmWithoutJavaMain/kotlin/script.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/src/jvmWithoutJavaMain/kotlin/script.kts new file mode 100644 index 00000000000..837db878426 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-with-tests/src/jvmWithoutJavaMain/kotlin/script.kts @@ -0,0 +1,2 @@ + +val x = 0 diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index 3980012fed7..ebb3e77bca8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder +import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName @@ -89,6 +90,8 @@ class KotlinMultiplatformPlugin( // propagate compiler plugin options to the source set language settings setupCompilerPluginOptions(project) + project.pluginManager.apply(ScriptingGradleSubplugin::class.java) + UnusedSourceSetsChecker.checkSourceSets(project) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt index 01e7c8b52cc..5dd84924f0f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt @@ -16,6 +16,7 @@ import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.compile.AbstractCompile import org.jetbrains.kotlin.cli.common.messages.MessageRenderer import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile import org.jetbrains.kotlin.gradle.internal.KaptGenerateStubsTask import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.scripting.ScriptingExtension @@ -51,11 +52,15 @@ class ScriptingGradleSubplugin : Plugin { if (task !is KaptGenerateStubsTask) { - val discoveryClasspathConfigurationName = getDiscoveryClasspathConfigurationName(task.sourceSetName) - project.configurations.findByName(discoveryClasspathConfigurationName)?.let { _ -> - configureScriptsExtensions(project, javaPluginConvention, task.sourceSetName) + try { + val discoveryClasspathConfigurationName = getDiscoveryClasspathConfigurationName(task.sourceSetName) + project.configurations.findByName(discoveryClasspathConfigurationName)?.let { _ -> + configureScriptsExtensions(project, javaPluginConvention, task.sourceSetName) + } + ?: project.logger.warn("kotlin scripting plugin: $project.${task.name} - configuration not found: $discoveryClasspathConfigurationName, $MISCONFIGURATION_MESSAGE_SUFFIX") + } catch (e: IllegalStateException) { + project.logger.warn("kotlin scripting plugin: applied in the non-supported environment (error received: ${e.message})") } - ?: project.logger.warn("kotlin scripting plugin: $project.${task.name} - configuration not found: $discoveryClasspathConfigurationName, $MISCONFIGURATION_MESSAGE_SUFFIX") } } if (useLazyTaskConfiguration) { @@ -204,7 +209,7 @@ class ScriptingKotlinGradleSubplugin : KotlinGradleSubplugin { } override fun isApplicable(project: Project, task: AbstractCompile) = - ScriptingGradleSubplugin.isEnabled(project) + task is KotlinJvmCompile && ScriptingGradleSubplugin.isEnabled(project) override fun apply( project: Project,