KotlinToolingMetadata: Use Project property accessor for task
This commit is contained in:
committed by
TeamCityServer
parent
0a59301f8a
commit
0119541462
+2
-2
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget
|
||||
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.gradle.tooling.buildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||
import org.jetbrains.kotlin.tooling.KotlinToolingMetadata
|
||||
@@ -152,7 +152,7 @@ class BuildKotlinToolingMetadataTest {
|
||||
}
|
||||
|
||||
private fun getKotlinToolingMetadata(): KotlinToolingMetadata {
|
||||
val task = project.tasks.named(BuildKotlinToolingMetadataTask.defaultTaskName, BuildKotlinToolingMetadataTask::class.java).get()
|
||||
val task = project.buildKotlinToolingMetadataTask!!.get()
|
||||
return task.getKotlinToolingMetadata()
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.gradle.tasks.KOTLIN_KLIB_COMMONIZER_EMBEDDABLE
|
||||
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_MODULE_GROUP
|
||||
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestsRegistry
|
||||
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.gradle.tooling.buildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
|
||||
import org.jetbrains.kotlin.gradle.utils.loadPropertyFromResources
|
||||
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
|
||||
@@ -91,7 +92,6 @@ abstract class KotlinBasePluginWrapper : Plugin<Project> {
|
||||
}
|
||||
|
||||
project.extensions.add(KotlinTestsRegistry.PROJECT_EXTENSION_NAME, createTestRegistry(project))
|
||||
project.tasks.register(BuildKotlinToolingMetadataTask.defaultTaskName, BuildKotlinToolingMetadataTask::class.java)
|
||||
|
||||
val plugin = getPlugin(project, kotlinGradleBuildServices)
|
||||
|
||||
@@ -100,6 +100,8 @@ abstract class KotlinBasePluginWrapper : Plugin<Project> {
|
||||
plugin.apply(project)
|
||||
|
||||
project.addNpmDependencyExtension()
|
||||
|
||||
project.buildKotlinToolingMetadataTask
|
||||
}
|
||||
|
||||
private fun addKotlinCompilerConfiguration(project: Project) {
|
||||
|
||||
+2
-5
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
|
||||
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.gradle.tooling.buildKotlinToolingMetadataTask
|
||||
|
||||
internal fun configurePublishingWithMavenPublish(project: Project) = project.pluginManager.withPlugin("maven-publish") {
|
||||
project.extensions.configure(PublishingExtension::class.java) { publishing ->
|
||||
@@ -50,10 +50,7 @@ private fun createRootPublication(project: Project, publishing: PublishingExtens
|
||||
}
|
||||
|
||||
private fun MavenPublication.addKotlinToolingMetadataArtifactIfNeeded(project: Project) {
|
||||
if (!PropertiesProvider(project).enableKotlinToolingMetadataArtifact) return
|
||||
val buildKotlinToolingMetadataTask = project.tasks.withType(BuildKotlinToolingMetadataTask::class.java)
|
||||
.named(BuildKotlinToolingMetadataTask.defaultTaskName) ?: return
|
||||
|
||||
val buildKotlinToolingMetadataTask = project.buildKotlinToolingMetadataTask ?: return
|
||||
|
||||
artifact(buildKotlinToolingMetadataTask.flatMap { it.outputFile }) { artifact ->
|
||||
artifact.classifier = "kotlin-tooling-metadata"
|
||||
|
||||
+25
-15
@@ -7,43 +7,54 @@ package org.jetbrains.kotlin.gradle.tooling
|
||||
|
||||
import com.android.build.gradle.BaseExtension
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.Internal
|
||||
import org.gradle.api.tasks.OutputFile
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.api.tasks.*
|
||||
import org.jetbrains.kotlin.compilerRunner.konanVersion
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
|
||||
import org.jetbrains.kotlin.gradle.tasks.locateTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||
import org.jetbrains.kotlin.tooling.KotlinToolingMetadata
|
||||
import org.jetbrains.kotlin.tooling.toJsonString
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* The default task managed by the Kotlin Gradle plugin or `null` if the task is disabled.
|
||||
* @see [PropertiesProvider.enableKotlinToolingMetadataArtifact]
|
||||
*/
|
||||
internal val Project.buildKotlinToolingMetadataTask: TaskProvider<BuildKotlinToolingMetadataTask>?
|
||||
get() {
|
||||
if (!PropertiesProvider(this).enableKotlinToolingMetadataArtifact) return null
|
||||
locateTask<BuildKotlinToolingMetadataTask>(BuildKotlinToolingMetadataTask.defaultTaskName)?.let { return it }
|
||||
return registerTask(BuildKotlinToolingMetadataTask.defaultTaskName) { task ->
|
||||
task.group = "build"
|
||||
task.description = "Build metadata json file containing information about the used Kotlin tooling"
|
||||
}
|
||||
}
|
||||
|
||||
open class BuildKotlinToolingMetadataTask : DefaultTask() {
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* The name of the default task managed by the Kotlin Gradle plugin.
|
||||
* If enabled, the Kotlin Gradle plugin will automatically register and manage a task with that name.
|
||||
* @see PropertiesProvider.enableKotlinToolingMetadataArtifact
|
||||
*/
|
||||
const val defaultTaskName: String = "buildKotlinToolingMetadata"
|
||||
}
|
||||
|
||||
init {
|
||||
group = "build"
|
||||
description = "Build metadata json file containing information about the used Kotlin tooling"
|
||||
}
|
||||
|
||||
|
||||
@get:OutputFile
|
||||
val outputFile: Property<File> = project.objects.property(File::class.java)
|
||||
.convention(project.buildDir.resolve("kotlinToolingMetadata").resolve("kotlin-tooling-metadata.json"))
|
||||
@@ -144,4 +155,3 @@ private fun buildNativeExtrasOrNull(target: KotlinTarget): KotlinToolingMetadata
|
||||
konanAbiVersion = KotlinAbiVersion.CURRENT.toString()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user