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.
This commit is contained in:
+26
-43
@@ -180,8 +180,7 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
|
||||
|
||||
internal class Kotlin2JvmSourceSetProcessor(
|
||||
tasksProvider: KotlinTasksProvider,
|
||||
kotlinCompilation: KotlinCompilationData<*>,
|
||||
private val kotlinPluginVersion: String
|
||||
kotlinCompilation: KotlinCompilationData<*>
|
||||
) : KotlinSourceSetProcessor<KotlinCompile>(
|
||||
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<Kotlin2JsCompile>(
|
||||
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<Kotlin2JsCompile>(
|
||||
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<KotlinCompileCommon>(
|
||||
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<Project> {
|
||||
|
||||
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<KotlinMultiplatformCommonOptions>(
|
||||
@@ -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<Project> {
|
||||
|
||||
@@ -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)
|
||||
|
||||
+22
-16
@@ -53,7 +53,6 @@ import kotlin.reflect.KClass
|
||||
abstract class KotlinBasePluginWrapper : Plugin<Project> {
|
||||
|
||||
private val log = Logging.getLogger(this.javaClass)
|
||||
val kotlinPluginVersion = loadKotlinVersionFromResource(log)
|
||||
|
||||
open val projectExtensionClass: KClass<out KotlinTopLevelExtension> get() = KotlinProjectExtension::class
|
||||
|
||||
@@ -61,6 +60,8 @@ abstract class KotlinBasePluginWrapper : Plugin<Project> {
|
||||
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<Project> {
|
||||
.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<Project> =
|
||||
KotlinPlugin(kotlinPluginVersion, registry)
|
||||
KotlinPlugin(registry)
|
||||
|
||||
override val projectExtensionClass: KClass<out KotlinJvmProjectExtension>
|
||||
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<Project> =
|
||||
KotlinCommonPlugin(kotlinPluginVersion, registry)
|
||||
KotlinCommonPlugin(registry)
|
||||
|
||||
override val projectExtensionClass: KClass<out KotlinCommonProjectExtension>
|
||||
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<Project> =
|
||||
KotlinAndroidPlugin(kotlinPluginVersion, registry)
|
||||
KotlinAndroidPlugin(registry)
|
||||
|
||||
override val projectExtensionClass: KClass<out KotlinAndroidProjectExtension>
|
||||
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<Project> =
|
||||
Kotlin2JsPlugin(kotlinPluginVersion, registry)
|
||||
Kotlin2JsPlugin(registry)
|
||||
|
||||
override val projectExtensionClass: KClass<out Kotlin2JsProjectExtension>
|
||||
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<Project> =
|
||||
KotlinJsPlugin(kotlinPluginVersion)
|
||||
KotlinJsPlugin(project.getKotlinPluginVersion())
|
||||
|
||||
override val projectExtensionClass: KClass<out KotlinJsProjectExtension>
|
||||
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<Project> =
|
||||
KotlinMultiplatformPlugin(kotlinPluginVersion)
|
||||
KotlinMultiplatformPlugin()
|
||||
|
||||
override val projectExtensionClass: KClass<out KotlinMultiplatformExtension>
|
||||
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 {})
|
||||
}
|
||||
+1
-2
@@ -370,8 +370,7 @@ internal val KotlinTarget.testTaskName: String
|
||||
|
||||
abstract class KotlinOnlyTargetConfigurator<KotlinCompilationType : KotlinCompilation<*>, KotlinTargetType : KotlinOnlyTarget<KotlinCompilationType>>(
|
||||
createDefaultSourceSets: Boolean,
|
||||
createTestCompilation: Boolean,
|
||||
val kotlinPluginVersion: String
|
||||
createTestCompilation: Boolean
|
||||
) : AbstractKotlinTargetConfigurator<KotlinTargetType>(
|
||||
createDefaultSourceSets,
|
||||
createTestCompilation
|
||||
|
||||
+4
-3
@@ -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
|
||||
|
||||
|
||||
+12
-17
@@ -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<Project> {
|
||||
class KotlinMultiplatformPlugin : Plugin<Project> {
|
||||
|
||||
private class TargetFromPresetExtension(val targetsContainer: KotlinTargetsContainerWithPresets) {
|
||||
fun <T : KotlinTarget> fromPreset(preset: KotlinTargetPreset<T>, 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)
|
||||
|
||||
+1
-2
@@ -12,8 +12,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
|
||||
|
||||
abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompilation<*>>(
|
||||
protected val project: Project,
|
||||
protected val kotlinPluginVersion: String
|
||||
protected val project: Project
|
||||
) : KotlinTargetPreset<R> {
|
||||
|
||||
protected abstract fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<T, R>
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
+2
-3
@@ -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<KotlinAndroidTarget> {
|
||||
|
||||
override fun getName(): String = PRESET_NAME
|
||||
@@ -23,7 +22,7 @@ class KotlinAndroidTargetPreset(
|
||||
preset = this@KotlinAndroidTargetPreset
|
||||
}
|
||||
|
||||
KotlinAndroidPlugin.applyToTarget(kotlinPluginVersion, result)
|
||||
KotlinAndroidPlugin.applyToTarget(result)
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -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<KotlinJsCompilation, KotlinJsTarget>(true, true, kotlinPluginVersion),
|
||||
open class KotlinJsTargetConfigurator :
|
||||
KotlinOnlyTargetConfigurator<KotlinJsCompilation, KotlinJsTarget>(true, true),
|
||||
KotlinTargetWithTestsConfigurator<KotlinJsReportAggregatingTestRun, KotlinJsTarget> {
|
||||
|
||||
override val testRunClass: Class<KotlinJsReportAggregatingTestRun> 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) {
|
||||
|
||||
+6
-14
@@ -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<KotlinJsTarget, KotlinJsCompilation>(
|
||||
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()
|
||||
}
|
||||
|
||||
+3
-3
@@ -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<KotlinJsIrCompilation, KotlinJsIrTarget>(true, true, kotlinPluginVersion),
|
||||
open class KotlinJsIrTargetConfigurator() :
|
||||
KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget>(true, true),
|
||||
KotlinTargetWithTestsConfigurator<KotlinJsReportAggregatingTestRun, KotlinJsIrTarget> {
|
||||
|
||||
override val testRunClass: Class<KotlinJsReportAggregatingTestRun> 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<out Zip> {
|
||||
|
||||
+6
-10
@@ -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<KotlinJsIrTarget, KotlinJsIrCompilation>(
|
||||
project,
|
||||
kotlinPluginVersion
|
||||
project
|
||||
) {
|
||||
internal var mixedMode: Boolean? = null
|
||||
|
||||
@@ -53,7 +51,7 @@ open class KotlinJsIrTargetPreset(
|
||||
}
|
||||
|
||||
override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget> =
|
||||
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<KotlinJsIrCompilation, KotlinJsIrTarget> =
|
||||
KotlinJsIrTargetConfigurator(kotlinPluginVersion)
|
||||
KotlinJsIrTargetConfigurator()
|
||||
}
|
||||
|
||||
+3
-3
@@ -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<KotlinJvmCompilation, KotlinJvmTarget>(true, true, kotlinPluginVersion),
|
||||
class KotlinJvmTargetConfigurator :
|
||||
KotlinOnlyTargetConfigurator<KotlinJvmCompilation, KotlinJvmTarget>(true, true),
|
||||
KotlinTargetWithTestsConfigurator<KotlinJvmTestRun, KotlinJvmTarget> {
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-5
@@ -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<KotlinJvmTarget, KotlinJvmCompilation>(
|
||||
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<KotlinJvmCompilation> =
|
||||
KotlinJvmCompilationFactory(forTarget)
|
||||
|
||||
override fun createKotlinTargetConfigurator() = KotlinJvmTargetConfigurator(kotlinPluginVersion)
|
||||
override fun createKotlinTargetConfigurator() = KotlinJvmTargetConfigurator()
|
||||
|
||||
override val platformType: KotlinPlatformType
|
||||
get() = KotlinPlatformType.jvm
|
||||
|
||||
+2
-3
@@ -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<KotlinWithJavaTarget<KotlinJvmOptions>> {
|
||||
|
||||
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 {
|
||||
|
||||
+4
-10
@@ -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<AbstractKotlinCompilation<*>, 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<KotlinNativeCompile>(kotlinCompilation) {
|
||||
|
||||
private val nativeTargetConfigurator =
|
||||
KotlinNativeTargetConfigurator<KotlinNativeTarget>(kotlinCompilation.project.getKotlinPluginVersion() ?: "" /*FIXME*/)
|
||||
|
||||
override val kotlinTask: TaskProvider<out KotlinNativeCompile> =
|
||||
with(nativeTargetConfigurator) {
|
||||
KotlinNativeTargetConfigurator.createKlibCompilationTask(kotlinCompilation)
|
||||
}
|
||||
KotlinNativeTargetConfigurator.createKlibCompilationTask(kotlinCompilation)
|
||||
|
||||
override fun run() = Unit
|
||||
}
|
||||
|
||||
+3
-7
@@ -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<KotlinMetadataTarget, AbstractKotlinCompilation<*>>(
|
||||
project,
|
||||
kotlinPluginVersion
|
||||
) {
|
||||
project: Project
|
||||
) : KotlinOnlyTargetPreset<KotlinMetadataTarget, AbstractKotlinCompilation<*>>(project) {
|
||||
override fun getName(): String = PRESET_NAME
|
||||
|
||||
override fun createCompilationFactory(
|
||||
@@ -42,7 +38,7 @@ class KotlinMetadataTargetPreset(
|
||||
}
|
||||
|
||||
override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<AbstractKotlinCompilation<*>, KotlinMetadataTarget> =
|
||||
KotlinMetadataTargetConfigurator(kotlinPluginVersion)
|
||||
KotlinMetadataTargetConfigurator()
|
||||
|
||||
override fun instantiateTarget(name: String): KotlinMetadataTarget {
|
||||
return project.objects.newInstance(KotlinMetadataTarget::class.java, project)
|
||||
|
||||
+7
-14
@@ -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<T : KotlinNativeTarget>(
|
||||
private val kotlinPluginVersion: String
|
||||
) : AbstractKotlinTargetConfigurator<T>(
|
||||
open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotlinTargetConfigurator<T>(
|
||||
createDefaultSourceSets = true,
|
||||
createTestCompilation = true
|
||||
) {
|
||||
@@ -501,7 +499,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget>(
|
||||
|
||||
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>,
|
||||
TestRunType : KotlinNativeBinaryTestRun,
|
||||
TaskType : KotlinNativeTest>(
|
||||
kotlinPluginVersion: String
|
||||
) : KotlinNativeTargetConfigurator<TargetType>(kotlinPluginVersion),
|
||||
) : KotlinNativeTargetConfigurator<TargetType>(),
|
||||
KotlinTargetWithTestsConfigurator<TestRunType, TargetType> {
|
||||
|
||||
abstract val testTaskClass: Class<TaskType>
|
||||
@@ -610,13 +607,11 @@ abstract class KotlinNativeTargetWithTestsConfigurator<
|
||||
}
|
||||
}
|
||||
|
||||
class KotlinNativeTargetWithHostTestsConfigurator(kotlinPluginVersion: String) :
|
||||
class KotlinNativeTargetWithHostTestsConfigurator() :
|
||||
KotlinNativeTargetWithTestsConfigurator<
|
||||
KotlinNativeTargetWithHostTests,
|
||||
KotlinNativeHostTestRun,
|
||||
KotlinNativeHostTest>(
|
||||
kotlinPluginVersion
|
||||
) {
|
||||
KotlinNativeHostTest>() {
|
||||
|
||||
override val testTaskClass: Class<KotlinNativeHostTest>
|
||||
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<KotlinNativeSimulatorTest>
|
||||
get() = KotlinNativeSimulatorTest::class.java
|
||||
|
||||
+10
-11
@@ -26,8 +26,7 @@ import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
|
||||
private val name: String,
|
||||
val project: Project,
|
||||
val konanTarget: KonanTarget,
|
||||
protected val kotlinPluginVersion: String
|
||||
val konanTarget: KonanTarget
|
||||
) : KotlinTargetPreset<T> {
|
||||
|
||||
init {
|
||||
@@ -108,32 +107,32 @@ abstract class AbstractKotlinNativeTargetPreset<T : KotlinNativeTarget>(
|
||||
|
||||
}
|
||||
|
||||
open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget: KonanTarget, kotlinPluginVersion: String) :
|
||||
AbstractKotlinNativeTargetPreset<KotlinNativeTarget>(name, project, konanTarget, kotlinPluginVersion) {
|
||||
open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget: KonanTarget) :
|
||||
AbstractKotlinNativeTargetPreset<KotlinNativeTarget>(name, project, konanTarget) {
|
||||
|
||||
override fun createTargetConfigurator(): KotlinTargetConfigurator<KotlinNativeTarget> =
|
||||
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<KotlinNativeTargetWithHostTests>(name, project, konanTarget, kotlinPluginVersion) {
|
||||
open class KotlinNativeTargetWithHostTestsPreset(name: String, project: Project, konanTarget: KonanTarget) :
|
||||
AbstractKotlinNativeTargetPreset<KotlinNativeTargetWithHostTests>(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<KotlinNativeTargetWithSimulatorTests>(name, project, konanTarget, kotlinPluginVersion) {
|
||||
open class KotlinNativeTargetWithSimulatorTestsPreset(name: String, project: Project, konanTarget: KonanTarget) :
|
||||
AbstractKotlinNativeTargetPreset<KotlinNativeTargetWithSimulatorTests>(name, project, konanTarget) {
|
||||
|
||||
override fun createTargetConfigurator(): KotlinNativeTargetWithSimulatorTestsConfigurator =
|
||||
KotlinNativeTargetWithSimulatorTestsConfigurator(kotlinPluginVersion)
|
||||
KotlinNativeTargetWithSimulatorTestsConfigurator()
|
||||
|
||||
override fun instantiateTarget(name: String): KotlinNativeTargetWithSimulatorTests =
|
||||
project.objects.newInstance(KotlinNativeTargetWithSimulatorTests::class.java, project, konanTarget)
|
||||
|
||||
+2
-4
@@ -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<File> {
|
||||
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<KotlinBasePluginWrapper>().firstOrNull()?.kotlinPluginVersion
|
||||
|
||||
private fun getModuleFromClassLoader(moduleId: String, moduleVersion: String): File? {
|
||||
val urlClassLoader = KotlinPlugin::class.java.classLoader as? URLClassLoader ?: return null
|
||||
return urlClassLoader.urLs
|
||||
|
||||
Reference in New Issue
Block a user