From 4cb6303fa85aaad3c5b4acdd5589c7526fe1f18d Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Wed, 31 Mar 2021 13:06:31 +0300 Subject: [PATCH] Get rid of kotlinPluginVersion in the constructors throughout the plugin We passed the kotlinPluginVersion which was only used for a single purpose in countless constructors. In fact, the plugin version is easy to load at the call site, as it gets loaded from the plugin's resources. So rework the plugin version loading code so that it doesn't rely on the applied plugin, and don't pass the plugin version in all those constructors. --- .../kotlin/gradle/plugin/KotlinPlugin.kt | 69 +++++++------------ .../gradle/plugin/KotlinPluginWrapper.kt | 38 +++++----- .../gradle/plugin/KotlinTargetConfigurator.kt | 3 +- .../gradle/plugin/SubpluginEnvironment.kt | 7 +- .../plugin/mpp/KotlinMultiplatformPlugin.kt | 29 ++++---- .../gradle/plugin/mpp/kotlinTargetPresets.kt | 3 +- .../targets/android/KotlinAndroidTarget.kt | 4 +- .../android/KotlinAndroidTargetPreset.kt | 5 +- .../gradle/targets/js/KotlinJsPlugin.kt | 4 +- .../targets/js/KotlinJsTargetConfigurator.kt | 6 +- .../gradle/targets/js/KotlinJsTargetPreset.kt | 20 ++---- .../js/ir/KotlinJsIrTargetConfigurator.kt | 6 +- .../targets/js/ir/KotlinJsIrTargetPreset.kt | 16 ++--- .../jvm/KotlinJvmTargetConfigurator.kt | 6 +- .../targets/jvm/KotlinJvmTargetPreset.kt | 8 +-- .../jvm/KotlinJvmWithJavaTargetPreset.kt | 5 +- .../KotlinMetadataTargetConfigurator.kt | 14 ++-- .../metadata/KotlinMetadataTargetPreset.kt | 10 +-- .../native/KotlinNativeTargetConfigurator.kt | 21 ++---- .../native/KotlinNativeTargetPreset.kt | 21 +++--- .../kotlin/gradle/tasks/jarSearchingUtil.kt | 6 +- 21 files changed, 124 insertions(+), 177 deletions(-) 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 f18e5f7d07e..7d1ae3ea2c0 100755 --- 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 @@ -180,8 +180,7 @@ internal abstract class KotlinSourceSetProcessor>( internal class Kotlin2JvmSourceSetProcessor( tasksProvider: KotlinTasksProvider, - kotlinCompilation: KotlinCompilationData<*>, - private val kotlinPluginVersion: String + kotlinCompilation: KotlinCompilationData<*> ) : KotlinSourceSetProcessor( tasksProvider, "Compiles the $kotlinCompilation.", kotlinCompilation ) { @@ -200,7 +199,7 @@ internal class Kotlin2JvmSourceSetProcessor( ScriptingGradleSubplugin.configureForSourceSet(project, kotlinCompilation.compilationPurpose) project.whenEvaluated { - val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project, kotlinPluginVersion) + val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project) if (kotlinCompilation is KotlinCompilation<*>) // FIXME support compiler plugins with PM20 subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation) @@ -233,8 +232,7 @@ internal fun KotlinCompilationOutput.addClassesDir(classesDirProvider: () -> Fil internal class Kotlin2JsSourceSetProcessor( tasksProvider: KotlinTasksProvider, - kotlinCompilation: KotlinCompilationData<*>, - private val kotlinPluginVersion: String + kotlinCompilation: KotlinCompilationData<*> ) : KotlinSourceSetProcessor( tasksProvider, taskDescription = "Compiles the Kotlin sources in $kotlinCompilation to JavaScript.", @@ -290,7 +288,7 @@ internal class Kotlin2JsSourceSetProcessor( } } - val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project, kotlinPluginVersion) + val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project) if (kotlinCompilation is KotlinCompilation<*>) { // FIXME support compiler plugins with PM20 subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation) } @@ -300,8 +298,7 @@ internal class Kotlin2JsSourceSetProcessor( internal class KotlinJsIrSourceSetProcessor( tasksProvider: KotlinTasksProvider, - kotlinCompilation: AbstractKotlinCompilation<*>, - private val kotlinPluginVersion: String + kotlinCompilation: AbstractKotlinCompilation<*> ) : KotlinSourceSetProcessor( tasksProvider, taskDescription = "Compiles the Kotlin sources in $kotlinCompilation to JavaScript.", kotlinCompilation = kotlinCompilation @@ -350,7 +347,7 @@ internal class KotlinJsIrSourceSetProcessor( } project.whenEvaluated { - val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project, kotlinPluginVersion) + val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project) subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation) } } @@ -358,8 +355,7 @@ internal class KotlinJsIrSourceSetProcessor( internal class KotlinCommonSourceSetProcessor( compilation: KotlinCompilationData<*>, - tasksProvider: KotlinTasksProvider, - private val kotlinPluginVersion: String + tasksProvider: KotlinTasksProvider ) : KotlinSourceSetProcessor( tasksProvider, taskDescription = "Compiles the kotlin sources in $compilation to Metadata.", kotlinCompilation = compilation ) { @@ -372,7 +368,7 @@ internal class KotlinCommonSourceSetProcessor( if (kotlinCompilation is AbstractKotlinCompilation<*>) { project.whenEvaluated { - val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project, kotlinPluginVersion) + val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project) subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation) } } @@ -389,24 +385,23 @@ internal class KotlinCommonSourceSetProcessor( internal abstract class AbstractKotlinPlugin( val tasksProvider: KotlinTasksProvider, - protected val kotlinPluginVersion: String, val registry: ToolingModelBuilderRegistry ) : Plugin { internal abstract fun buildSourceSetProcessor( project: Project, - compilation: AbstractKotlinCompilation<*>, - kotlinPluginVersion: String + compilation: AbstractKotlinCompilation<*> ): KotlinSourceSetProcessor<*> override fun apply(project: Project) { + val kotlinPluginVersion = project.getKotlinPluginVersion() project.plugins.apply(JavaPlugin::class.java) val target = (project.kotlinExtension as KotlinSingleJavaTargetExtension).target configureTarget( target, - { compilation -> buildSourceSetProcessor(project, compilation, kotlinPluginVersion) } + { compilation -> buildSourceSetProcessor(project, compilation) } ) applyUserDefinedAttributes(target) @@ -601,16 +596,15 @@ internal abstract class AbstractKotlinPlugin( } internal open class KotlinPlugin( - kotlinPluginVersion: String, registry: ToolingModelBuilderRegistry -) : AbstractKotlinPlugin(KotlinTasksProvider(), kotlinPluginVersion, registry) { +) : AbstractKotlinPlugin(KotlinTasksProvider(), registry) { companion object { private const val targetName = "" // use empty suffix for the task names } - override fun buildSourceSetProcessor(project: Project, compilation: AbstractKotlinCompilation<*>, kotlinPluginVersion: String) = - Kotlin2JvmSourceSetProcessor(tasksProvider, compilation, kotlinPluginVersion) + override fun buildSourceSetProcessor(project: Project, compilation: AbstractKotlinCompilation<*>) = + Kotlin2JvmSourceSetProcessor(tasksProvider, compilation) override fun apply(project: Project) { val target = @@ -632,9 +626,8 @@ internal open class KotlinPlugin( } internal open class KotlinCommonPlugin( - kotlinPluginVersion: String, registry: ToolingModelBuilderRegistry -) : AbstractKotlinPlugin(KotlinTasksProvider(), kotlinPluginVersion, registry) { +) : AbstractKotlinPlugin(KotlinTasksProvider(), registry) { companion object { private const val targetName = "common" @@ -642,10 +635,9 @@ internal open class KotlinCommonPlugin( override fun buildSourceSetProcessor( project: Project, - compilation: AbstractKotlinCompilation<*>, - kotlinPluginVersion: String + compilation: AbstractKotlinCompilation<*> ): KotlinSourceSetProcessor<*> = - KotlinCommonSourceSetProcessor(compilation, tasksProvider, kotlinPluginVersion) + KotlinCommonSourceSetProcessor(compilation, tasksProvider) override fun apply(project: Project) { val target = KotlinWithJavaTarget( @@ -661,9 +653,8 @@ internal open class KotlinCommonPlugin( } internal open class Kotlin2JsPlugin( - kotlinPluginVersion: String, registry: ToolingModelBuilderRegistry -) : AbstractKotlinPlugin(KotlinTasksProvider(), kotlinPluginVersion, registry) { +) : AbstractKotlinPlugin(KotlinTasksProvider(), registry) { companion object { private const val targetName = "2Js" @@ -672,12 +663,9 @@ internal open class Kotlin2JsPlugin( override fun buildSourceSetProcessor( project: Project, - compilation: AbstractKotlinCompilation<*>, - kotlinPluginVersion: String + compilation: AbstractKotlinCompilation<*> ): KotlinSourceSetProcessor<*> = - Kotlin2JsSourceSetProcessor( - tasksProvider, compilation, kotlinPluginVersion - ) + Kotlin2JsSourceSetProcessor(tasksProvider, compilation) override fun apply(project: Project) { if (!PropertiesProvider(project).noWarn2JsPlugin) { @@ -691,7 +679,6 @@ internal open class Kotlin2JsPlugin( } internal open class KotlinAndroidPlugin( - private val kotlinPluginVersion: String, private val registry: ToolingModelBuilderRegistry ) : Plugin { @@ -701,20 +688,19 @@ internal open class KotlinAndroidPlugin( val androidTarget = KotlinAndroidTarget("", project) (project.kotlinExtension as KotlinAndroidProjectExtension).target = androidTarget - applyToTarget(kotlinPluginVersion, androidTarget) + applyToTarget(androidTarget) applyUserDefinedAttributes(androidTarget) customizeKotlinDependencies(project) - registry.register(KotlinModelBuilder(kotlinPluginVersion, androidTarget)) + registry.register(KotlinModelBuilder(project.getKotlinPluginVersion(), androidTarget)) project.whenEvaluated { project.components.addAll(androidTarget.components) } } companion object { fun androidTargetHandler( - kotlinPluginVersion: String, androidTarget: KotlinAndroidTarget ): AbstractAndroidProjectHandler { val tasksProvider = AndroidTasksProvider() @@ -727,25 +713,22 @@ internal open class KotlinAndroidPlugin( } val kotlinTools = KotlinConfigurationTools( - tasksProvider, - kotlinPluginVersion + tasksProvider ) return Android25ProjectHandler(kotlinTools) } fun applyToTarget( - kotlinPluginVersion: String, kotlinTarget: KotlinAndroidTarget ) { - androidTargetHandler(kotlinPluginVersion, kotlinTarget).configureTarget(kotlinTarget) + androidTargetHandler(kotlinTarget).configureTarget(kotlinTarget) } } } class KotlinConfigurationTools internal constructor( - val kotlinTasksProvider: KotlinTasksProvider, - val kotlinPluginVersion: String + val kotlinTasksProvider: KotlinTasksProvider ) abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTools: KotlinConfigurationTools) { @@ -827,7 +810,7 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool val compilation = kotlinAndroidTarget.compilations.getByName(getVariantName(variant)) postprocessVariant(variant, compilation, project, ext, plugin) - val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project, kotlinConfigurationTools.kotlinPluginVersion) + val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project) subpluginEnvironment.addSubpluginOptions(project, compilation) } checkAndroidAnnotationProcessorDependencyUsage(project) 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 63b1d2f82b8..4eea3046c79 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 @@ -53,7 +53,6 @@ import kotlin.reflect.KClass abstract class KotlinBasePluginWrapper : Plugin { private val log = Logging.getLogger(this.javaClass) - val kotlinPluginVersion = loadKotlinVersionFromResource(log) open val projectExtensionClass: KClass get() = KotlinProjectExtension::class @@ -61,6 +60,8 @@ abstract class KotlinBasePluginWrapper : Plugin { DefaultKotlinSourceSetFactory(project) override fun apply(project: Project) { + val kotlinPluginVersion = project.getKotlinPluginVersion() + val listenerRegistryHolder = BuildEventsListenerRegistryHolder.getInstance(project) val statisticsReporter = KotlinBuildStatsService.getOrCreateInstance(project, listenerRegistryHolder) statisticsReporter?.report(StringMetrics.KOTLIN_COMPILER_VERSION, kotlinPluginVersion) @@ -116,7 +117,7 @@ abstract class KotlinBasePluginWrapper : Plugin { .maybeCreate(COMPILER_CLASSPATH_CONFIGURATION_NAME) .defaultDependencies { it.add( - project.dependencies.create("$KOTLIN_MODULE_GROUP:$KOTLIN_COMPILER_EMBEDDABLE:$kotlinPluginVersion") + project.dependencies.create("$KOTLIN_MODULE_GROUP:$KOTLIN_COMPILER_EMBEDDABLE:${project.getKotlinPluginVersion()}") ) } project @@ -151,7 +152,7 @@ open class KotlinPluginWrapper @Inject constructor( protected val registry: ToolingModelBuilderRegistry ) : KotlinBasePluginWrapper() { override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin = - KotlinPlugin(kotlinPluginVersion, registry) + KotlinPlugin(registry) override val projectExtensionClass: KClass get() = KotlinJvmProjectExtension::class @@ -161,7 +162,7 @@ open class KotlinCommonPluginWrapper @Inject constructor( protected val registry: ToolingModelBuilderRegistry ) : KotlinBasePluginWrapper() { override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin = - KotlinCommonPlugin(kotlinPluginVersion, registry) + KotlinCommonPlugin(registry) override val projectExtensionClass: KClass get() = KotlinCommonProjectExtension::class @@ -171,7 +172,7 @@ open class KotlinAndroidPluginWrapper @Inject constructor( protected val registry: ToolingModelBuilderRegistry ) : KotlinBasePluginWrapper() { override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin = - KotlinAndroidPlugin(kotlinPluginVersion, registry) + KotlinAndroidPlugin(registry) override val projectExtensionClass: KClass get() = KotlinAndroidProjectExtension::class @@ -181,7 +182,7 @@ open class Kotlin2JsPluginWrapper @Inject constructor( protected val registry: ToolingModelBuilderRegistry ) : KotlinBasePluginWrapper() { override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin = - Kotlin2JsPlugin(kotlinPluginVersion, registry) + Kotlin2JsPlugin(registry) override val projectExtensionClass: KClass get() = Kotlin2JsProjectExtension::class @@ -190,7 +191,7 @@ open class Kotlin2JsPluginWrapper @Inject constructor( open class KotlinJsPluginWrapper @Inject constructor( ) : KotlinBasePluginWrapper() { override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin = - KotlinJsPlugin(kotlinPluginVersion) + KotlinJsPlugin(project.getKotlinPluginVersion()) override val projectExtensionClass: KClass get() = KotlinJsProjectExtension::class @@ -222,7 +223,7 @@ open class KotlinJsPluginWrapper @Inject constructor( open class KotlinMultiplatformPluginWrapper @Inject constructor( ) : KotlinBasePluginWrapper() { override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin = - KotlinMultiplatformPlugin(kotlinPluginVersion) + KotlinMultiplatformPlugin() override val projectExtensionClass: KClass get() = KotlinMultiplatformExtension::class @@ -251,12 +252,17 @@ open class KotlinPm20PluginWrapper @Inject constructor(private val objectFactory get() = KotlinPm20ProjectExtension::class } -fun Project.getKotlinPluginVersion(): String? = - plugins.asSequence().mapNotNull { (it as? KotlinBasePluginWrapper)?.kotlinPluginVersion }.firstOrNull() - -fun Plugin<*>.loadKotlinVersionFromResource(log: Logger): String { - log.kotlinDebug("Loading version information") - val projectVersion = loadPropertyFromResources("project.properties", "project.version") - log.kotlinDebug("Found project version [$projectVersion]") - return projectVersion +fun Project.getKotlinPluginVersion(): String { + if (!kotlinPluginVersionFromResources.isInitialized()) { + project.logger.kotlinDebug("Loading version information") + project.logger.kotlinDebug("Found project version [${kotlinPluginVersionFromResources.value}") + } + return kotlinPluginVersionFromResources.value } + +private fun loadKotlinPluginVersionFromResourcesOf(any: Any) = + any.loadPropertyFromResources("project.properties", "project.version") + +private val kotlinPluginVersionFromResources = lazy { + loadKotlinPluginVersionFromResourcesOf(object {}) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 2abc1909d37..325afddcc52 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -370,8 +370,7 @@ internal val KotlinTarget.testTaskName: String abstract class KotlinOnlyTargetConfigurator, KotlinTargetType : KotlinOnlyTarget>( createDefaultSourceSets: Boolean, - createTestCompilation: Boolean, - val kotlinPluginVersion: String + createTestCompilation: Boolean ) : AbstractKotlinTargetConfigurator( createDefaultSourceSets, createTestCompilation diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/SubpluginEnvironment.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/SubpluginEnvironment.kt index b28872f8216..3bfb87be89b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/SubpluginEnvironment.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/SubpluginEnvironment.kt @@ -20,8 +20,9 @@ class SubpluginEnvironment( private val kotlinPluginVersion: String ) { companion object { - fun loadSubplugins(project: Project, kotlinPluginVersion: String): SubpluginEnvironment = - try { + fun loadSubplugins(project: Project): SubpluginEnvironment { + val kotlinPluginVersion = project.getKotlinPluginVersion() + return try { @Suppress("DEPRECATION") // support for the deprecated plugin API val klass = KotlinGradleSubplugin::class.java val buildscriptClassloader = project.buildscript.classLoader @@ -51,6 +52,7 @@ class SubpluginEnvironment( project.logger.error("Could not load subplugins", e) SubpluginEnvironment(listOf(), kotlinPluginVersion) } + } } fun addSubpluginOptions( @@ -136,7 +138,6 @@ internal class LegacyKotlinCompilerPluginSupportPlugin( val androidProjectHandlerOrNull: AbstractAndroidProjectHandler? = if (kotlinCompilation is KotlinJvmAndroidCompilation) KotlinAndroidPlugin.androidTargetHandler( - checkNotNull(project.getKotlinPluginVersion()), kotlinCompilation.target as KotlinAndroidTarget ) else null 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 6c855d6ce35..f4cdc898037 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 @@ -44,9 +44,7 @@ import org.jetbrains.kotlin.konan.target.KonanTarget.* import org.jetbrains.kotlin.konan.target.presetName import org.jetbrains.kotlin.statistics.metrics.StringMetrics -class KotlinMultiplatformPlugin( - private val kotlinPluginVersion: String -) : Plugin { +class KotlinMultiplatformPlugin : Plugin { private class TargetFromPresetExtension(val targetsContainer: KotlinTargetsContainerWithPresets) { fun fromPreset(preset: KotlinTargetPreset, name: String, configureClosure: Closure<*>): T = @@ -93,7 +91,7 @@ class KotlinMultiplatformPlugin( // set up metadata publishing targetsFromPreset.fromPreset( - KotlinMetadataTargetPreset(project, kotlinPluginVersion), + KotlinMetadataTargetPreset(project), METADATA_TARGET_NAME ) configurePublishingWithMavenPublish(project) @@ -176,20 +174,17 @@ class KotlinMultiplatformPlugin( fun setupDefaultPresets(project: Project) { with(project.multiplatformExtension.presets) { - add(KotlinJvmTargetPreset(project, kotlinPluginVersion)) - add(KotlinJsTargetPreset(project, kotlinPluginVersion).apply { irPreset = null }) - add(KotlinJsIrTargetPreset(project, kotlinPluginVersion).apply { mixedMode = false }) + add(KotlinJvmTargetPreset(project)) + add(KotlinJsTargetPreset(project).apply { irPreset = null }) + add(KotlinJsIrTargetPreset(project).apply { mixedMode = false }) add( - KotlinJsTargetPreset( - project, - kotlinPluginVersion - ).apply { - irPreset = KotlinJsIrTargetPreset(project, kotlinPluginVersion) + KotlinJsTargetPreset(project).apply { + irPreset = KotlinJsIrTargetPreset(project) .apply { mixedMode = true } } ) - add(KotlinAndroidTargetPreset(project, kotlinPluginVersion)) - add(KotlinJvmWithJavaTargetPreset(project, kotlinPluginVersion)) + add(KotlinAndroidTargetPreset(project)) + add(KotlinJvmWithJavaTargetPreset(project)) // Note: modifying these sets should also be reflected in the DSL code generator, see 'presetEntries.kt' val nativeTargetsWithHostTests = setOf(LINUX_X64, MACOS_X64, MINGW_X64) @@ -199,10 +194,10 @@ class KotlinMultiplatformPlugin( .forEach { (_, konanTarget) -> val targetToAdd = when (konanTarget) { in nativeTargetsWithHostTests -> - KotlinNativeTargetWithHostTestsPreset(konanTarget.presetName, project, konanTarget, kotlinPluginVersion) + KotlinNativeTargetWithHostTestsPreset(konanTarget.presetName, project, konanTarget) in nativeTargetsWithSimulatorTests -> - KotlinNativeTargetWithSimulatorTestsPreset(konanTarget.presetName, project, konanTarget, kotlinPluginVersion) - else -> KotlinNativeTargetPreset(konanTarget.presetName, project, konanTarget, kotlinPluginVersion) + KotlinNativeTargetWithSimulatorTestsPreset(konanTarget.presetName, project, konanTarget) + else -> KotlinNativeTargetPreset(konanTarget.presetName, project, konanTarget) } add(targetToAdd) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt index 2203125ee1b..003bc4ff4ff 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt @@ -12,8 +12,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset abstract class KotlinOnlyTargetPreset, T : KotlinCompilation<*>>( - protected val project: Project, - protected val kotlinPluginVersion: String + protected val project: Project ) : KotlinTargetPreset { protected abstract fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTarget.kt index 7b2cde1e95e..cbc78729430 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTarget.kt @@ -72,7 +72,7 @@ open class KotlinAndroidTarget( } val variantNames = - KotlinAndroidPlugin.androidTargetHandler(project.getKotlinPluginVersion()!!, this) + KotlinAndroidPlugin.androidTargetHandler(this) .getLibraryVariantNames() val missingVariants = @@ -90,7 +90,7 @@ open class KotlinAndroidTarget( override val kotlinComponents by lazy { checkPublishLibraryVariantsExist() - KotlinAndroidPlugin.androidTargetHandler(project.getKotlinPluginVersion()!!, this).doCreateComponents() + KotlinAndroidPlugin.androidTargetHandler(this).doCreateComponents() } private fun isVariantPublished(variant: BaseVariant): Boolean { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTargetPreset.kt index 24f55b6c6d6..fcde11e7756 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidTargetPreset.kt @@ -11,8 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset class KotlinAndroidTargetPreset( - private val project: Project, - private val kotlinPluginVersion: String + private val project: Project ) : KotlinTargetPreset { override fun getName(): String = PRESET_NAME @@ -23,7 +22,7 @@ class KotlinAndroidTargetPreset( preset = this@KotlinAndroidTargetPreset } - KotlinAndroidPlugin.applyToTarget(kotlinPluginVersion, result) + KotlinAndroidPlugin.applyToTarget(result) return result } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt index 75e86aa811f..97675ecd6b7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt @@ -42,8 +42,8 @@ open class KotlinJsPlugin( customizeKotlinDependencies(project) kotlinExtension.apply { - irPreset = KotlinJsIrSingleTargetPreset(project, kotlinPluginVersion) - legacyPreset = KotlinJsSingleTargetPreset(project, kotlinPluginVersion) + irPreset = KotlinJsIrSingleTargetPreset(project) + legacyPreset = KotlinJsSingleTargetPreset(project) defaultJsCompilerType = PropertiesProvider(project).jsCompiler } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt index 345cfa2f684..c70e206a3c8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt @@ -20,8 +20,8 @@ import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry import org.jetbrains.kotlin.gradle.testing.testTaskName import java.util.concurrent.Callable -open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) : - KotlinOnlyTargetConfigurator(true, true, kotlinPluginVersion), +open class KotlinJsTargetConfigurator : + KotlinOnlyTargetConfigurator(true, true), KotlinTargetWithTestsConfigurator { override val testRunClass: Class get() = KotlinJsReportAggregatingTestRun::class.java @@ -51,7 +51,7 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) : override fun buildCompilationProcessor(compilation: KotlinJsCompilation): KotlinSourceSetProcessor<*> { val tasksProvider = KotlinTasksProvider() - return Kotlin2JsSourceSetProcessor(tasksProvider, compilation, kotlinPluginVersion) + return Kotlin2JsSourceSetProcessor(tasksProvider, compilation) } override fun configureCompilationDefaults(target: KotlinJsTarget) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt index 42d69f3f31a..7414f251d3f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt @@ -18,11 +18,9 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.statistics.metrics.StringMetrics open class KotlinJsTargetPreset( - project: Project, - kotlinPluginVersion: String + project: Project ) : KotlinOnlyTargetPreset( - project, - kotlinPluginVersion + project ) { var irPreset: KotlinJsIrTargetPreset? = null internal set @@ -84,9 +82,7 @@ open class KotlinJsTargetPreset( } } - override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator( - kotlinPluginVersion - ) + override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator() override fun getName(): String { return lowerCamelCaseName( @@ -105,11 +101,9 @@ open class KotlinJsTargetPreset( } class KotlinJsSingleTargetPreset( - project: Project, - kotlinPluginVersion: String + project: Project ) : KotlinJsTargetPreset( - project, - kotlinPluginVersion + project ) { override val isMpp: Boolean get() = false @@ -125,7 +119,5 @@ class KotlinJsSingleTargetPreset( ?.decapitalize() } - override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator( - kotlinPluginVersion - ) + override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetConfigurator.kt index 0f66f5cc9dd..1c140b17b5b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetConfigurator.kt @@ -21,8 +21,8 @@ import org.jetbrains.kotlin.gradle.utils.isParentOf import org.jetbrains.kotlin.gradle.utils.klibModuleName import java.io.File -open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) : - KotlinOnlyTargetConfigurator(true, true, kotlinPluginVersion), +open class KotlinJsIrTargetConfigurator() : + KotlinOnlyTargetConfigurator(true, true), KotlinTargetWithTestsConfigurator { override val testRunClass: Class get() = KotlinJsReportAggregatingTestRun::class.java @@ -55,7 +55,7 @@ open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) : override fun buildCompilationProcessor(compilation: KotlinJsIrCompilation): KotlinSourceSetProcessor<*> { val tasksProvider = KotlinTasksProvider() - return KotlinJsIrSourceSetProcessor(tasksProvider, compilation, kotlinPluginVersion) + return KotlinJsIrSourceSetProcessor(tasksProvider, compilation) } override fun createArchiveTasks(target: KotlinJsIrTarget): TaskProvider { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt index 6b5666a536d..1d9a696e823 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt @@ -13,11 +13,9 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName open class KotlinJsIrTargetPreset( - project: Project, - kotlinPluginVersion: String + project: Project ) : KotlinOnlyTargetPreset( - project, - kotlinPluginVersion + project ) { internal var mixedMode: Boolean? = null @@ -53,7 +51,7 @@ open class KotlinJsIrTargetPreset( } override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator = - KotlinJsIrTargetConfigurator(kotlinPluginVersion) + KotlinJsIrTargetConfigurator() override fun getName(): String = PRESET_NAME @@ -72,11 +70,9 @@ open class KotlinJsIrTargetPreset( } class KotlinJsIrSingleTargetPreset( - project: Project, - kotlinPluginVersion: String + project: Project ) : KotlinJsIrTargetPreset( - project, - kotlinPluginVersion + project ) { override val isMpp: Boolean get() = false @@ -93,5 +89,5 @@ class KotlinJsIrSingleTargetPreset( } override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator = - KotlinJsIrTargetConfigurator(kotlinPluginVersion) + KotlinJsIrTargetConfigurator() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetConfigurator.kt index 32726173ac3..288acd4cf12 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetConfigurator.kt @@ -19,8 +19,8 @@ import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry import org.jetbrains.kotlin.gradle.testing.testTaskName -class KotlinJvmTargetConfigurator(kotlinPluginVersion: String) : - KotlinOnlyTargetConfigurator(true, true, kotlinPluginVersion), +class KotlinJvmTargetConfigurator : + KotlinOnlyTargetConfigurator(true, true), KotlinTargetWithTestsConfigurator { override fun configurePlatformSpecificModel(target: KotlinJvmTarget) { @@ -74,6 +74,6 @@ class KotlinJvmTargetConfigurator(kotlinPluginVersion: String) : override fun buildCompilationProcessor(compilation: KotlinJvmCompilation): KotlinSourceSetProcessor<*> { val tasksProvider = KotlinTasksProvider() - return Kotlin2JvmSourceSetProcessor(tasksProvider, compilation, kotlinPluginVersion) + return Kotlin2JvmSourceSetProcessor(tasksProvider, compilation) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetPreset.kt index b2cd28a9889..1d3b810b4e4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTargetPreset.kt @@ -12,11 +12,9 @@ import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTargetConfigurator class KotlinJvmTargetPreset( - project: Project, - kotlinPluginVersion: String + project: Project ) : KotlinOnlyTargetPreset( - project, - kotlinPluginVersion + project ) { override fun instantiateTarget(name: String): KotlinJvmTarget { return project.objects.newInstance(KotlinJvmTarget::class.java, project) @@ -27,7 +25,7 @@ class KotlinJvmTargetPreset( override fun createCompilationFactory(forTarget: KotlinJvmTarget): KotlinCompilationFactory = KotlinJvmCompilationFactory(forTarget) - override fun createKotlinTargetConfigurator() = KotlinJvmTargetConfigurator(kotlinPluginVersion) + override fun createKotlinTargetConfigurator() = KotlinJvmTargetConfigurator() override val platformType: KotlinPlatformType get() = KotlinPlatformType.jvm diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt index 3c5ac09bc67..ac53759cae6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt @@ -16,8 +16,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild class KotlinJvmWithJavaTargetPreset( - private val project: Project, - private val kotlinPluginVersion: String + private val project: Project ) : KotlinTargetPreset> { override fun getName(): String = PRESET_NAME @@ -36,7 +35,7 @@ class KotlinJvmWithJavaTargetPreset( } AbstractKotlinPlugin.configureTarget(target) { compilation -> - Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), compilation, kotlinPluginVersion) + Kotlin2JvmSourceSetProcessor(KotlinTasksProvider(), compilation) } target.compilations.getByName("test").run { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index cd887cefab7..b340540be1b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -47,11 +47,10 @@ internal val Project.isKotlinGranularMetadataEnabled: Boolean internal val Project.isCompatibilityMetadataVariantEnabled: Boolean get() = PropertiesProvider(this).enableCompatibilityMetadataVariant == true -class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) : +class KotlinMetadataTargetConfigurator : KotlinOnlyTargetConfigurator, KotlinMetadataTarget>( createDefaultSourceSets = false, - createTestCompilation = false, - kotlinPluginVersion = kotlinPluginVersion + createTestCompilation = false ) { companion object { internal const val ALL_METADATA_JAR_NAME = "allMetadataJar" @@ -115,7 +114,7 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) : override fun buildCompilationProcessor(compilation: AbstractKotlinCompilation<*>): KotlinCompilationProcessor<*> = when (compilation) { is KotlinCommonCompilation -> { val tasksProvider = KotlinTasksProvider() - KotlinCommonSourceSetProcessor(compilation, tasksProvider, kotlinPluginVersion) + KotlinCommonSourceSetProcessor(compilation, tasksProvider) } is KotlinSharedNativeCompilation -> NativeSharedCompilationProcessor(compilation) else -> error("unsupported compilation type ${compilation::class.qualifiedName}") @@ -478,13 +477,8 @@ internal class NativeSharedCompilationProcessor( override val kotlinCompilation: KotlinNativeFragmentMetadataCompilationData ) : KotlinCompilationProcessor(kotlinCompilation) { - private val nativeTargetConfigurator = - KotlinNativeTargetConfigurator(kotlinCompilation.project.getKotlinPluginVersion() ?: "" /*FIXME*/) - override val kotlinTask: TaskProvider = - with(nativeTargetConfigurator) { - KotlinNativeTargetConfigurator.createKlibCompilationTask(kotlinCompilation) - } + KotlinNativeTargetConfigurator.createKlibCompilationTask(kotlinCompilation) override fun run() = Unit } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt index ba8f20f52bd..9b8c77fdba0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt @@ -13,12 +13,8 @@ import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinO import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator class KotlinMetadataTargetPreset( - project: Project, - kotlinPluginVersion: String -) : KotlinOnlyTargetPreset>( - project, - kotlinPluginVersion -) { + project: Project +) : KotlinOnlyTargetPreset>(project) { override fun getName(): String = PRESET_NAME override fun createCompilationFactory( @@ -42,7 +38,7 @@ class KotlinMetadataTargetPreset( } override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator, KotlinMetadataTarget> = - KotlinMetadataTargetConfigurator(kotlinPluginVersion) + KotlinMetadataTargetConfigurator() override fun instantiateTarget(name: String): KotlinMetadataTarget { return project.objects.newInstance(KotlinMetadataTarget::class.java, project) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt index 8bf89e7678a..b43a5fbaa88 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt @@ -46,9 +46,7 @@ import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.KonanTarget import java.io.File -open class KotlinNativeTargetConfigurator( - private val kotlinPluginVersion: String -) : AbstractKotlinTargetConfigurator( +open class KotlinNativeTargetConfigurator : AbstractKotlinTargetConfigurator( createDefaultSourceSets = true, createTestCompilation = true ) { @@ -501,7 +499,7 @@ open class KotlinNativeTargetConfigurator( project.whenEvaluated { SubpluginEnvironment - .loadSubplugins(project, project.getKotlinPluginVersion() ?: "unspecified" /* TODO */) + .loadSubplugins(project) .addSubpluginOptions(project, compilation) compilation.compileKotlinTaskProvider.configure { @@ -573,8 +571,7 @@ abstract class KotlinNativeTargetWithTestsConfigurator< TargetType : KotlinNativeTargetWithTests, TestRunType : KotlinNativeBinaryTestRun, TaskType : KotlinNativeTest>( - kotlinPluginVersion: String -) : KotlinNativeTargetConfigurator(kotlinPluginVersion), +) : KotlinNativeTargetConfigurator(), KotlinTargetWithTestsConfigurator { abstract val testTaskClass: Class @@ -610,13 +607,11 @@ abstract class KotlinNativeTargetWithTestsConfigurator< } } -class KotlinNativeTargetWithHostTestsConfigurator(kotlinPluginVersion: String) : +class KotlinNativeTargetWithHostTestsConfigurator() : KotlinNativeTargetWithTestsConfigurator< KotlinNativeTargetWithHostTests, KotlinNativeHostTestRun, - KotlinNativeHostTest>( - kotlinPluginVersion - ) { + KotlinNativeHostTest>() { override val testTaskClass: Class get() = KotlinNativeHostTest::class.java @@ -634,13 +629,11 @@ class KotlinNativeTargetWithHostTestsConfigurator(kotlinPluginVersion: String) : DefaultHostTestRun(name, target).apply { configureTestRun(target, this) } } -class KotlinNativeTargetWithSimulatorTestsConfigurator(kotlinPluginVersion: String) : +class KotlinNativeTargetWithSimulatorTestsConfigurator : KotlinNativeTargetWithTestsConfigurator< KotlinNativeTargetWithSimulatorTests, KotlinNativeSimulatorTestRun, - KotlinNativeSimulatorTest>( - kotlinPluginVersion - ) { + KotlinNativeSimulatorTest>() { override val testTaskClass: Class get() = KotlinNativeSimulatorTest::class.java diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt index 9dbd5e5c2f8..08d8c185a43 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt @@ -26,8 +26,7 @@ import org.jetbrains.kotlin.konan.target.KonanTarget abstract class AbstractKotlinNativeTargetPreset( private val name: String, val project: Project, - val konanTarget: KonanTarget, - protected val kotlinPluginVersion: String + val konanTarget: KonanTarget ) : KotlinTargetPreset { init { @@ -108,32 +107,32 @@ abstract class AbstractKotlinNativeTargetPreset( } -open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget: KonanTarget, kotlinPluginVersion: String) : - AbstractKotlinNativeTargetPreset(name, project, konanTarget, kotlinPluginVersion) { +open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget: KonanTarget) : + AbstractKotlinNativeTargetPreset(name, project, konanTarget) { override fun createTargetConfigurator(): KotlinTargetConfigurator = - KotlinNativeTargetConfigurator(kotlinPluginVersion) + KotlinNativeTargetConfigurator() override fun instantiateTarget(name: String): KotlinNativeTarget { return project.objects.newInstance(KotlinNativeTarget::class.java, project, konanTarget) } } -open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project, konanTarget: KonanTarget, kotlinPluginVersion: String) : - AbstractKotlinNativeTargetPreset(name, project, konanTarget, kotlinPluginVersion) { +open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project, konanTarget: KonanTarget) : + AbstractKotlinNativeTargetPreset(name, project, konanTarget) { override fun createTargetConfigurator(): KotlinNativeTargetWithHostTestsConfigurator = - KotlinNativeTargetWithHostTestsConfigurator(kotlinPluginVersion) + KotlinNativeTargetWithHostTestsConfigurator() override fun instantiateTarget(name: String): KotlinNativeTargetWithHostTests = project.objects.newInstance(KotlinNativeTargetWithHostTests::class.java, project, konanTarget) } -open class KotlinNativeTargetWithSimulatorTestsPreset(name: String, project: Project, konanTarget: KonanTarget, kotlinPluginVersion: String) : - AbstractKotlinNativeTargetPreset(name, project, konanTarget, kotlinPluginVersion) { +open class KotlinNativeTargetWithSimulatorTestsPreset(name: String, project: Project, konanTarget: KonanTarget) : + AbstractKotlinNativeTargetPreset(name, project, konanTarget) { override fun createTargetConfigurator(): KotlinNativeTargetWithSimulatorTestsConfigurator = - KotlinNativeTargetWithSimulatorTestsConfigurator(kotlinPluginVersion) + KotlinNativeTargetWithSimulatorTestsConfigurator() override fun instantiateTarget(name: String): KotlinNativeTargetWithSimulatorTests = project.objects.newInstance(KotlinNativeTargetWithSimulatorTests::class.java, project, konanTarget) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt index dc64cdeca9c..620f8205df6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt @@ -23,6 +23,7 @@ import org.gradle.api.artifacts.ResolvedDependency import org.gradle.api.initialization.dsl.ScriptHandler import org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper import org.jetbrains.kotlin.gradle.plugin.KotlinPlugin +import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion import java.io.File import java.net.URLClassLoader import java.net.URLDecoder @@ -130,7 +131,7 @@ internal fun findJarByClass(klass: Class<*>): File? { } private fun findKotlinModuleJar(project: Project, expectedClassName: String, moduleId: String): List { - val pluginVersion = pluginVersionFromAppliedPlugin(project) + val pluginVersion = project.getKotlinPluginVersion() val filesToCheck = sequenceOf(pluginVersion?.let { version -> getModuleFromClassLoader(moduleId, version) }) + Sequence { findPotentialModuleJars(project, moduleId).iterator() } //call the body only when queried @@ -138,9 +139,6 @@ private fun findKotlinModuleJar(project: Project, expectedClassName: String, mod return filesToCheck.filterNotNull().firstOrNull { it.hasEntry(entryToFind) }?.let { listOf(it) } ?: emptyList() } -private fun pluginVersionFromAppliedPlugin(project: Project): String? = - project.plugins.filterIsInstance().firstOrNull()?.kotlinPluginVersion - private fun getModuleFromClassLoader(moduleId: String, moduleVersion: String): File? { val urlClassLoader = KotlinPlugin::class.java.classLoader as? URLClassLoader ?: return null return urlClassLoader.urLs