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 bb8ef40acd4..d5fd7b5e5ec 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 @@ -101,7 +101,6 @@ class Kotlin2JvmSourceSetProcessor( project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet, - val scriptHandler: ScriptHandler, tasksProvider: KotlinTasksProvider, kotlinSourceSetProvider: KotlinSourceSetProvider ) : KotlinSourceSetProcessor( @@ -168,7 +167,6 @@ class Kotlin2JsSourceSetProcessor( project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet, - val scriptHandler: ScriptHandler, tasksProvider: KotlinTasksProvider, kotlinSourceSetProvider: KotlinSourceSetProvider ) : KotlinSourceSetProcessor( @@ -217,7 +215,7 @@ class Kotlin2JsSourceSetProcessor( } -abstract class AbstractKotlinPlugin @Inject constructor(val scriptHandler: ScriptHandler, val tasksProvider: KotlinTasksProvider, val kotlinSourceSetProvider: KotlinSourceSetProvider) : Plugin { +abstract class AbstractKotlinPlugin(val tasksProvider: KotlinTasksProvider, val kotlinSourceSetProvider: KotlinSourceSetProvider) : Plugin { abstract fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet): KotlinSourceSetProcessor<*> override fun apply(project: Project) { @@ -242,12 +240,11 @@ abstract class AbstractKotlinPlugin @Inject constructor(val scriptHandler: Scrip open class KotlinPlugin( - scriptHandler: ScriptHandler, tasksProvider: KotlinTasksProvider, kotlinSourceSetProvider: KotlinSourceSetProvider -) : AbstractKotlinPlugin(scriptHandler, tasksProvider, kotlinSourceSetProvider) { +) : AbstractKotlinPlugin(tasksProvider, kotlinSourceSetProvider) { override fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet) = - Kotlin2JvmSourceSetProcessor(project, javaBasePlugin, sourceSet, scriptHandler, tasksProvider, kotlinSourceSetProvider) + Kotlin2JvmSourceSetProcessor(project, javaBasePlugin, sourceSet, tasksProvider, kotlinSourceSetProvider) override fun apply(project: Project) { project.createKaptExtension() @@ -257,16 +254,14 @@ open class KotlinPlugin( open class Kotlin2JsPlugin( - scriptHandler: ScriptHandler, tasksProvider: KotlinTasksProvider, kotlinSourceSetProvider: KotlinSourceSetProvider -) : AbstractKotlinPlugin(scriptHandler, tasksProvider, kotlinSourceSetProvider) { +) : AbstractKotlinPlugin(tasksProvider, kotlinSourceSetProvider) { override fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet) = - Kotlin2JsSourceSetProcessor(project, javaBasePlugin, sourceSet, scriptHandler, tasksProvider, kotlinSourceSetProvider) + Kotlin2JsSourceSetProcessor(project, javaBasePlugin, sourceSet, tasksProvider, kotlinSourceSetProvider) } open class KotlinAndroidPlugin( - val scriptHandler: ScriptHandler, val tasksProvider: KotlinTasksProvider, private val kotlinSourceSetProvider: KotlinSourceSetProvider ) : Plugin { @@ -512,24 +507,6 @@ class SubpluginEnvironment( } } -open class GradleUtils(val scriptHandler: ScriptHandler, val project: Project) { - public fun resolveDependencies(vararg coordinates: String): Collection { - val dependencyHandler: DependencyHandler = scriptHandler.dependencies - val configurationsContainer: ConfigurationContainer = scriptHandler.configurations - - val deps = coordinates.map { dependencyHandler.create(it) } - val configuration = configurationsContainer.detachedConfiguration(*deps.toTypedArray()) - - return configuration.resolvedConfiguration.getFiles { true } - } - - public fun kotlinPluginVersion(): String = project.properties["kotlin.gradle.plugin.version"] as String - public fun kotlinPluginArtifactCoordinates(artifact: String): String = "org.jetbrains.kotlin:${artifact}:${kotlinPluginVersion()}" - public fun kotlinJsLibraryCoordinates(): String = kotlinPluginArtifactCoordinates("kotlin-js-library") - - public fun resolveJsLibrary(): File = resolveDependencies(kotlinJsLibraryCoordinates()).first() -} - internal operator fun FileCollection.plus(other: FileCollection) = this.plus(other) internal operator fun FileCollection.minus(other: FileCollection) = this.minus(other) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt index 24304af0338..0a04dcc5290 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt @@ -2,7 +2,6 @@ package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.initialization.dsl.ScriptHandler import org.gradle.api.internal.file.FileResolver import org.gradle.api.logging.Logger import org.gradle.api.logging.Logging @@ -14,23 +13,16 @@ import javax.inject.Inject // TODO: simplify: the complicated structure is a leftover from dynamic loading of plugin core, could be significantly simplified now abstract class KotlinBasePluginWrapper(protected val fileResolver: FileResolver): Plugin { - val log = Logging.getLogger(this.javaClass) override fun apply(project: Project) { - val sourceBuildScript = findSourceBuildScript(project) - if (sourceBuildScript == null) { - log.error("Failed to determine source cofiguration of kotlin plugin. Can not download core. Please verify that this or any parent project " + - "contains 'kotlin-gradle-plugin' in buildscript's classpath configuration.") - return - } // TODO: consider only set if if daemon or parallel compilation are enabled, though this way it should be safe too System.setProperty(org.jetbrains.kotlin.cli.common.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY, "true") val kotlinPluginVersion = loadKotlinVersionFromResource(log) project.extensions.extraProperties?.set("kotlin.gradle.plugin.version", kotlinPluginVersion) - val plugin = getPlugin(sourceBuildScript) + val plugin = getPlugin() plugin.apply(project) val cleanUpBuildListener = CleanUpBuildListener(project) @@ -38,39 +30,22 @@ abstract class KotlinBasePluginWrapper(protected val fileResolver: FileResolver) project.gradle.addBuildListener(cleanUpBuildListener) } - protected abstract fun getPlugin(scriptHandler: ScriptHandler): Plugin - - private fun findSourceBuildScript(project: Project): ScriptHandler? { - log.kotlinDebug("Looking for proper script handler") - var curProject = project - while (curProject != curProject.parent) { - log.kotlinDebug("Looking in project $project") - val scriptHandler = curProject.buildscript - val found = scriptHandler.configurations.findByName("classpath")?.firstOrNull { it.name.contains("kotlin-gradle-plugin") } != null - if (found) { - log.kotlinDebug("Found! returning...") - return scriptHandler - } - log.kotlinDebug("not found, switching to parent") - curProject = curProject.parent ?: break - } - return null - } + protected abstract fun getPlugin(): Plugin } open class KotlinPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) { - override fun getPlugin(scriptHandler: ScriptHandler) = - KotlinPlugin(scriptHandler, KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) + override fun getPlugin() = + KotlinPlugin(KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) } open class KotlinAndroidPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) { - override fun getPlugin(scriptHandler: ScriptHandler) = - KotlinAndroidPlugin(scriptHandler, AndroidTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) + override fun getPlugin() = + KotlinAndroidPlugin(AndroidTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) } open class Kotlin2JsPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) { - override fun getPlugin(scriptHandler: ScriptHandler) = - Kotlin2JsPlugin(scriptHandler, KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) + override fun getPlugin() = + Kotlin2JsPlugin(KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) } fun Logger.kotlinDebug(message: String) {