Gradle: introduce "target" DSL function for single platform plugins

This commit is contained in:
Sergey Rostov
2019-05-17 13:11:26 +03:00
parent b8fd4f56bb
commit 775ed2f9e5
@@ -16,9 +16,11 @@
package org.jetbrains.kotlin.gradle.dsl
import groovy.lang.Closure
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.internal.plugins.DslObject
import org.gradle.util.ConfigureUtil
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
@@ -61,6 +63,8 @@ open class KotlinProjectExtension {
abstract class KotlinSingleTargetExtension : KotlinProjectExtension() {
abstract val target: KotlinTarget
open fun target(body: Closure<out KotlinTarget>) = ConfigureUtil.configure(body, target)
}
abstract class KotlinSingleJavaTargetExtension : KotlinSingleTargetExtension() {
@@ -70,16 +74,22 @@ abstract class KotlinSingleJavaTargetExtension : KotlinSingleTargetExtension() {
open class KotlinJvmProjectExtension : KotlinSingleJavaTargetExtension() {
override lateinit var target: KotlinWithJavaTarget<KotlinJvmOptions>
internal set
open fun target(body: KotlinWithJavaTarget<KotlinJvmOptions>.() -> Unit) = target.run(body)
}
open class Kotlin2JsProjectExtension : KotlinSingleJavaTargetExtension() {
override lateinit var target: KotlinWithJavaTarget<KotlinJsOptions>
internal set
open fun target(body: KotlinWithJavaTarget<KotlinJsOptions>.() -> Unit) = target.run(body)
}
open class KotlinJsProjectExtension : KotlinSingleTargetExtension() {
override lateinit var target: KotlinOnlyTarget<KotlinJsCompilation>
open fun target(body: KotlinOnlyTarget<KotlinJsCompilation>.() -> Unit) = target.run(body)
@Deprecated(
"Needed for IDE import using the MPP import mechanism",
level = DeprecationLevel.HIDDEN
@@ -91,11 +101,15 @@ open class KotlinJsProjectExtension : KotlinSingleTargetExtension() {
open class KotlinCommonProjectExtension : KotlinSingleJavaTargetExtension() {
override lateinit var target: KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>
internal set
open fun target(body: KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>.() -> Unit) = target.run(body)
}
open class KotlinAndroidProjectExtension : KotlinSingleTargetExtension() {
override lateinit var target: KotlinAndroidTarget
internal set
open fun target(body: KotlinAndroidTarget.() -> Unit) = target.run(body)
}
open class ExperimentalExtension {