Create objects via Gradle ObjectFactory to allow access from Groovy
This commit is contained in:
+6
-6
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -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
|
||||
|
||||
+4
-3
@@ -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()
|
||||
|
||||
+3
-1
@@ -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)
|
||||
|
||||
|
||||
+2
-1
@@ -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
-2
@@ -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)
|
||||
}
|
||||
|
||||
+2
-1
@@ -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 {
|
||||
|
||||
|
||||
+2
-1
@@ -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> {
|
||||
|
||||
+3
-1
@@ -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
|
||||
|
||||
|
||||
+3
-1
@@ -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 {
|
||||
|
||||
+3
-2
@@ -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> {
|
||||
|
||||
+6
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user