Apply scripting subplugin in gradle mpp plugin, so scripts could be added to mpp sources

#KT-30679 fixed
This commit is contained in:
Ilya Chernikov
2019-03-28 19:22:14 +01:00
parent 3a3ba5bd8d
commit 16ae313b22
6 changed files with 19 additions and 6 deletions
@@ -398,6 +398,7 @@ class NewMultiplatformIT : BaseGradleIT() {
arrayOf( arrayOf(
it + "com/example/lib/CommonKt.class", it + "com/example/lib/CommonKt.class",
it + "com/example/lib/MainKt.class", it + "com/example/lib/MainKt.class",
it + "Script.class",
it + "META-INF/new-mpp-lib-with-tests.kotlin_module" it + "META-INF/new-mpp-lib-with-tests.kotlin_module"
) )
}, },
@@ -37,7 +37,8 @@ kotlin {
} }
configure([main, jvmWithoutJavaMain]) { configure([main, jvmWithoutJavaMain]) {
dependencies { dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib' implementation 'org.jetbrains.kotlin:kotlin-stdlib'
implementation 'org.jetbrains.kotlin:kotlin-script-runtime'
} }
} }
configure([test, jvmWithoutJavaTest]) { configure([test, jvmWithoutJavaTest]) {
@@ -29,6 +29,7 @@ kotlin {
configure(listOf(main, jvmWithoutJavaMain)) { configure(listOf(main, jvmWithoutJavaMain)) {
dependencies { dependencies {
implementation(kotlin("stdlib")) implementation(kotlin("stdlib"))
implementation(kotlin("script-runtime"))
} }
} }
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder 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.SingleWarningPerBuild
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -89,6 +90,8 @@ class KotlinMultiplatformPlugin(
// propagate compiler plugin options to the source set language settings // propagate compiler plugin options to the source set language settings
setupCompilerPluginOptions(project) setupCompilerPluginOptions(project)
project.pluginManager.apply(ScriptingGradleSubplugin::class.java)
UnusedSourceSetsChecker.checkSourceSets(project) UnusedSourceSetsChecker.checkSourceSets(project)
} }
@@ -16,6 +16,7 @@ import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.api.tasks.compile.AbstractCompile
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector 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.internal.KaptGenerateStubsTask
import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.scripting.ScriptingExtension import org.jetbrains.kotlin.gradle.scripting.ScriptingExtension
@@ -51,11 +52,15 @@ class ScriptingGradleSubplugin : Plugin<Project> {
if (task !is KaptGenerateStubsTask) { if (task !is KaptGenerateStubsTask) {
val discoveryClasspathConfigurationName = getDiscoveryClasspathConfigurationName(task.sourceSetName) try {
project.configurations.findByName(discoveryClasspathConfigurationName)?.let { _ -> val discoveryClasspathConfigurationName = getDiscoveryClasspathConfigurationName(task.sourceSetName)
configureScriptsExtensions(project, javaPluginConvention, 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) { if (useLazyTaskConfiguration) {
@@ -204,7 +209,7 @@ class ScriptingKotlinGradleSubplugin : KotlinGradleSubplugin<AbstractCompile> {
} }
override fun isApplicable(project: Project, task: AbstractCompile) = override fun isApplicable(project: Project, task: AbstractCompile) =
ScriptingGradleSubplugin.isEnabled(project) task is KotlinJvmCompile && ScriptingGradleSubplugin.isEnabled(project)
override fun apply( override fun apply(
project: Project, project: Project,