Fix and refactor scripting subplugin application logic
so warning is not shown when discovery configuration is not populated fix #KT-31124 refactor code for clarity on the way also apply scripting subplugin after main plugin to ensure that configurations are created before scripting is initialized
This commit is contained in:
+9
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.gradle
|
|||||||
import org.gradle.api.logging.LogLevel
|
import org.gradle.api.logging.LogLevel
|
||||||
import org.jetbrains.kotlin.gradle.plugin.MULTIPLE_KOTLIN_PLUGINS_LOADED_WARNING
|
import org.jetbrains.kotlin.gradle.plugin.MULTIPLE_KOTLIN_PLUGINS_LOADED_WARNING
|
||||||
import org.jetbrains.kotlin.gradle.plugin.MULTIPLE_KOTLIN_PLUGINS_SPECIFIC_PROJECTS_WARNING
|
import org.jetbrains.kotlin.gradle.plugin.MULTIPLE_KOTLIN_PLUGINS_SPECIFIC_PROJECTS_WARNING
|
||||||
|
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
||||||
import org.jetbrains.kotlin.gradle.tasks.USING_JVM_INCREMENTAL_COMPILATION_MESSAGE
|
import org.jetbrains.kotlin.gradle.tasks.USING_JVM_INCREMENTAL_COMPILATION_MESSAGE
|
||||||
import org.jetbrains.kotlin.gradle.util.*
|
import org.jetbrains.kotlin.gradle.util.*
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -995,4 +996,12 @@ class KotlinGradleIT : BaseGradleIT() {
|
|||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testNoScriptingWarning() = with(Project("simpleProject")) {
|
||||||
|
// KT-31124
|
||||||
|
build {
|
||||||
|
assertNotContains(ScriptingGradleSubplugin.MISCONFIGURATION_MESSAGE_SUFFIX)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -569,9 +569,9 @@ internal open class KotlinPlugin(
|
|||||||
}
|
}
|
||||||
(project.kotlinExtension as KotlinJvmProjectExtension).target = target
|
(project.kotlinExtension as KotlinJvmProjectExtension).target = target
|
||||||
|
|
||||||
project.pluginManager.apply(ScriptingGradleSubplugin::class.java)
|
|
||||||
|
|
||||||
super.apply(project)
|
super.apply(project)
|
||||||
|
|
||||||
|
project.pluginManager.apply(ScriptingGradleSubplugin::class.java)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+13
-9
@@ -27,8 +27,6 @@ import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
|||||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsFromClasspathDiscoverySource
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsFromClasspathDiscoverySource
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
private const val MISCONFIGURATION_MESSAGE_SUFFIX = "the plugin is probably applied by a mistake"
|
|
||||||
|
|
||||||
private const val MIN_SUPPORTED_GRADLE_MAJOR_VERSION = 5
|
private const val MIN_SUPPORTED_GRADLE_MAJOR_VERSION = 5
|
||||||
private const val MIN_SUPPORTED_GRADLE_MINOR_VERSION = 0
|
private const val MIN_SUPPORTED_GRADLE_MINOR_VERSION = 0
|
||||||
|
|
||||||
@@ -36,6 +34,8 @@ private const val SCRIPTING_LOG_PREFIX = "kotlin scripting plugin:"
|
|||||||
|
|
||||||
class ScriptingGradleSubplugin : Plugin<Project> {
|
class ScriptingGradleSubplugin : Plugin<Project> {
|
||||||
companion object {
|
companion object {
|
||||||
|
const val MISCONFIGURATION_MESSAGE_SUFFIX = "the plugin is probably applied by a mistake"
|
||||||
|
|
||||||
fun isEnabled(project: Project) = project.plugins.findPlugin(ScriptingGradleSubplugin::class.java) != null
|
fun isEnabled(project: Project) = project.plugins.findPlugin(ScriptingGradleSubplugin::class.java) != null
|
||||||
|
|
||||||
fun configureForSourceSet(project: Project, sourceSetName: String) {
|
fun configureForSourceSet(project: Project, sourceSetName: String) {
|
||||||
@@ -44,6 +44,7 @@ class ScriptingGradleSubplugin : Plugin<Project> {
|
|||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
description = "Script filename extensions discovery classpath configuration"
|
description = "Script filename extensions discovery classpath configuration"
|
||||||
}
|
}
|
||||||
|
project.logger.info("$SCRIPTING_LOG_PREFIX created the scripting discovery configuration: ${discoveryConfiguration.name}")
|
||||||
|
|
||||||
configureDiscoveryTransformation(project, discoveryConfiguration, getDiscoveryResultsConfigurationName(sourceSetName))
|
configureDiscoveryTransformation(project, discoveryConfiguration, getDiscoveryResultsConfigurationName(sourceSetName))
|
||||||
}
|
}
|
||||||
@@ -61,14 +62,17 @@ class ScriptingGradleSubplugin : Plugin<Project> {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
val discoveryClasspathConfigurationName = getDiscoveryClasspathConfigurationName(task.sourceSetName)
|
val discoveryClasspathConfigurationName = getDiscoveryClasspathConfigurationName(task.sourceSetName)
|
||||||
if (project.configurations.findByName(discoveryClasspathConfigurationName)?.allDependencies?.isEmpty() == false) {
|
val discoveryClasspathConfiguration = project.configurations.findByName(discoveryClasspathConfigurationName)
|
||||||
if (isGradleVersionAtLeast(MIN_SUPPORTED_GRADLE_MAJOR_VERSION, MIN_SUPPORTED_GRADLE_MINOR_VERSION)) {
|
when {
|
||||||
configureScriptsExtensions(project, javaPluginConvention, task.sourceSetName)
|
discoveryClasspathConfiguration == null ->
|
||||||
} else {
|
project.logger.warn("$SCRIPTING_LOG_PREFIX $project.${task.name} - configuration not found: $discoveryClasspathConfigurationName, $MISCONFIGURATION_MESSAGE_SUFFIX")
|
||||||
project.logger.warn("$SCRIPTING_LOG_PREFIX incompatible Gradle version. Please use the plugin with Gradle version $MIN_SUPPORTED_GRADLE_MAJOR_VERSION.$MIN_SUPPORTED_GRADLE_MINOR_VERSION or newer.")
|
discoveryClasspathConfiguration.allDependencies.isEmpty() -> {
|
||||||
|
// skip further checks - user did not configured any discovery sources
|
||||||
}
|
}
|
||||||
} else {
|
!isGradleVersionAtLeast(MIN_SUPPORTED_GRADLE_MAJOR_VERSION, MIN_SUPPORTED_GRADLE_MINOR_VERSION) ->
|
||||||
project.logger.warn("$SCRIPTING_LOG_PREFIX $project.${task.name} - configuration not found: $discoveryClasspathConfigurationName, $MISCONFIGURATION_MESSAGE_SUFFIX")
|
project.logger.warn("$SCRIPTING_LOG_PREFIX incompatible Gradle version. Please use the plugin with Gradle version $MIN_SUPPORTED_GRADLE_MAJOR_VERSION.$MIN_SUPPORTED_GRADLE_MINOR_VERSION or newer.")
|
||||||
|
else ->
|
||||||
|
configureScriptsExtensions(project, javaPluginConvention, task.sourceSetName)
|
||||||
}
|
}
|
||||||
} catch (e: IllegalStateException) {
|
} catch (e: IllegalStateException) {
|
||||||
project.logger.warn("$SCRIPTING_LOG_PREFIX applied in the non-supported environment (error received: ${e.message})")
|
project.logger.warn("$SCRIPTING_LOG_PREFIX applied in the non-supported environment (error received: ${e.message})")
|
||||||
|
|||||||
Reference in New Issue
Block a user