Create objects via Gradle ObjectFactory to allow access from Groovy

This commit is contained in:
Sergey Igushkin
2019-08-13 18:00:36 +03:00
parent fe50029beb
commit 3011a3cf81
12 changed files with 44 additions and 22 deletions
@@ -18,6 +18,7 @@ import org.gradle.api.file.FileCollection
import org.gradle.api.internal.artifacts.ArtifactAttributes
import org.gradle.api.internal.plugins.DslObject
import org.gradle.api.plugins.BasePlugin
import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.plugins.JavaBasePlugin
import org.gradle.api.tasks.Delete
import org.gradle.api.tasks.bundling.Jar
@@ -410,14 +411,13 @@ internal interface KotlinTargetWithTestsConfigurator<R : KotlinTargetTestRun<*>,
"override the $testRunsPropertyName property with a var."
)
val testRunsContainer = project.container(testRunClass) { testRunName -> createTestRun(testRunName, target) }
@Suppress("UNCHECKED_CAST")
(mutableProperty as KMutableProperty1<KotlinTargetWithTests<*, R>, NamedDomainObjectContainer<R>>)
.set(
target,
project.container(testRunClass) { testRunName ->
createTestRun(testRunName, target)
}
)
.set(target, testRunsContainer)
(target as ExtensionAware).extensions.add(target::testRuns.name, testRunsContainer)
}
}
@@ -17,10 +17,12 @@ import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurati
import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
import javax.inject.Inject
internal const val COMMON_MAIN_ELEMENTS_CONFIGURATION_NAME = "commonMainMetadataElements"
open class KotlinMetadataTarget(project: Project) : KotlinOnlyTarget<KotlinCommonCompilation>(project, KotlinPlatformType.common) {
open class KotlinMetadataTarget @Inject constructor(project: Project) :
KotlinOnlyTarget<KotlinCommonCompilation>(project, KotlinPlatformType.common) {
override val kotlinComponents: Set<KotlinTargetComponent> by lazy {
if (!project.isKotlinGranularMetadataEnabled)
super.kotlinComponents
@@ -21,8 +21,9 @@ import org.jetbrains.kotlin.gradle.tasks.locateTask
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
import org.jetbrains.kotlin.gradle.testing.testTaskName
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import javax.inject.Inject
class KotlinJsTarget(project: Project, platformType: KotlinPlatformType) :
open class KotlinJsTarget @Inject constructor(project: Project, platformType: KotlinPlatformType) :
KotlinOnlyTarget<KotlinJsCompilation>(project, platformType),
KotlinTargetWithTests<JsAggregatingExecutionSource, KotlinJsReportAggregatingTestRun>,
KotlinJsTargetDsl
@@ -41,7 +42,7 @@ class KotlinJsTarget(project: Project, platformType: KotlinPlatformType) :
}
private val browserLazyDelegate = lazy {
KotlinBrowserJs(this).also {
project.objects.newInstance(KotlinBrowserJs::class.java, this).also {
it.configure()
browserConfiguredHandlers.forEach { handler -> handler(it) }
browserConfiguredHandlers.clear()
@@ -59,7 +60,7 @@ class KotlinJsTarget(project: Project, platformType: KotlinPlatformType) :
}
private val nodejsLazyDelegate = lazy {
KotlinNodeJs(this).also {
project.objects.newInstance(KotlinNodeJs::class.java, this).also {
it.configure()
nodejsConfiguredHandlers.forEach { handler -> handler(it) }
nodejsConfiguredHandlers.clear()
@@ -23,7 +23,9 @@ open class KotlinJsTargetPreset(
override val platformType: KotlinPlatformType
get() = KotlinPlatformType.js
override fun instantiateTarget() = KotlinJsTarget(project, platformType)
override fun instantiateTarget(): KotlinJsTarget {
return project.objects.newInstance(KotlinJsTarget::class.java, project, platformType)
}
override fun createKotlinTargetConfigurator() = KotlinJsTargetConfigurator(kotlinPluginVersion)
@@ -14,8 +14,9 @@ import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
import org.jetbrains.kotlin.gradle.tasks.createOrRegisterTask
import javax.inject.Inject
class KotlinBrowserJs(target: KotlinJsTarget) :
open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
KotlinJsSubTarget(target, "browser"),
KotlinJsBrowserDsl {
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.targets.js.subtargets
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.plugins.ExtensionAware
import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
@@ -34,8 +35,8 @@ abstract class KotlinJsSubTarget(
val runTaskName = disambiguateCamelCased("run")
val testTaskName = disambiguateCamelCased("test")
override val testRuns: NamedDomainObjectContainer<KotlinJsPlatformTestRun> =
project.container(KotlinJsPlatformTestRun::class.java) { name -> KotlinJsPlatformTestRun(name, this) }
final override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsPlatformTestRun>
private set
fun configure() {
NpmResolverPlugin.apply(project)
@@ -53,6 +54,10 @@ abstract class KotlinJsSubTarget(
lowerCamelCaseName(target.disambiguationClassifier, disambiguationClassifier, name)
private fun configureTests() {
testRuns = project.container(KotlinJsPlatformTestRun::class.java) { name -> KotlinJsPlatformTestRun(name, this) }.also {
(this as ExtensionAware).extensions.add(this::testRuns.name, it)
}
testRuns.all { configureTestRunDefaults(it) }
testRuns.create(KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME)
}
@@ -10,8 +10,9 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import javax.inject.Inject
class KotlinNodeJs(target: KotlinJsTarget) :
open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) :
KotlinJsSubTarget(target, "node"),
KotlinJsNodeDsl {
@@ -21,8 +21,9 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
import java.util.concurrent.Callable
import javax.inject.Inject
class KotlinJvmTarget(
open class KotlinJvmTarget @Inject constructor(
project: Project
) : KotlinOnlyTarget<KotlinJvmCompilation>(project, KotlinPlatformType.jvm),
KotlinTargetWithTests<JvmClasspathTestRunSource, KotlinJvmTestRun> {
@@ -18,7 +18,9 @@ class KotlinJvmTargetPreset(
project,
kotlinPluginVersion
) {
override fun instantiateTarget(): KotlinJvmTarget = KotlinJvmTarget(project)
override fun instantiateTarget(): KotlinJvmTarget {
return project.objects.newInstance(KotlinJvmTarget::class.java, project)
}
override fun getName(): String = PRESET_NAME
@@ -37,7 +37,9 @@ class KotlinMetadataTargetPreset(
override fun createKotlinTargetConfigurator(): KotlinOnlyTargetConfigurator<KotlinCommonCompilation, KotlinMetadataTarget> =
KotlinMetadataTargetConfigurator(kotlinPluginVersion)
override fun instantiateTarget(): KotlinMetadataTarget = KotlinMetadataTarget(project)
override fun instantiateTarget(): KotlinMetadataTarget {
return project.objects.newInstance(KotlinMetadataTarget::class.java, project)
}
override fun createTarget(name: String): KotlinMetadataTarget =
super.createTarget(name).apply {
@@ -19,8 +19,9 @@ import org.jetbrains.kotlin.gradle.targets.native.KotlinNativeBinaryTestRun
import org.jetbrains.kotlin.gradle.targets.native.NativeBinaryTestRunSource
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
import org.jetbrains.kotlin.konan.target.KonanTarget
import javax.inject.Inject
open class KotlinNativeTarget(
open class KotlinNativeTarget @Inject constructor(
project: Project,
val konanTarget: KonanTarget
) : KotlinOnlyTarget<KotlinNativeCompilation>(project, KotlinPlatformType.native) {
@@ -64,7 +65,7 @@ open class KotlinNativeTarget(
}
}
open class KotlinNativeTargetWithTests(
open class KotlinNativeTargetWithTests @Inject constructor(
project: Project,
konanTarget: KonanTarget
) : KotlinNativeTarget(project, konanTarget), KotlinTargetWithTests<NativeBinaryTestRunSource, KotlinNativeBinaryTestRun> {
@@ -124,7 +124,9 @@ open class KotlinNativeTargetPreset(name: String, project: Project, konanTarget:
override fun createTargetConfigurator(): KotlinTargetConfigurator<KotlinNativeTarget> =
KotlinNativeTargetConfigurator(kotlinPluginVersion)
override fun instantiateTarget(name: String): KotlinNativeTarget = KotlinNativeTarget(project, konanTarget)
override fun instantiateTarget(name: String): KotlinNativeTarget {
return project.objects.newInstance(KotlinNativeTarget::class.java, project, konanTarget)
}
}
open class KotlinNativeTargetWithTestsPreset(name: String, project: Project, konanTarget: KonanTarget, kotlinPluginVersion: String) :
@@ -133,7 +135,9 @@ open class KotlinNativeTargetWithTestsPreset(name: String, project: Project, kon
override fun createTargetConfigurator(): KotlinTargetConfigurator<KotlinNativeTargetWithTests> =
KotlinNativeTargetWithTestsConfigurator(kotlinPluginVersion)
override fun instantiateTarget(name: String): KotlinNativeTargetWithTests = KotlinNativeTargetWithTests(project, konanTarget)
override fun instantiateTarget(name: String): KotlinNativeTargetWithTests {
return project.objects.newInstance(KotlinNativeTargetWithTests::class.java, project, konanTarget)
}
}
internal val KonanTarget.isCurrentHost: Boolean