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