[Gradle] Implement IdeMultiplatformImportStatistics as project level service

KT-55289
This commit is contained in:
Sebastian Sellmair
2022-12-12 10:00:35 +01:00
committed by Space Team
parent 636d4a74a5
commit 59ddd381aa
3 changed files with 12 additions and 4 deletions
@@ -21,8 +21,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.measureTimeMillisWithResult
internal class IdeMultiplatformImportImpl( internal class IdeMultiplatformImportImpl(
private val extension: KotlinProjectExtension, private val extension: KotlinProjectExtension
val statistics: IdeMultiplatformImportStatistics = IdeMultiplatformImportStatistics()
) : IdeMultiplatformImport { ) : IdeMultiplatformImport {
override fun resolveDependencies(sourceSetName: String): Set<IdeaKotlinDependency> { override fun resolveDependencies(sourceSetName: String): Set<IdeaKotlinDependency> {
@@ -61,7 +60,7 @@ internal class IdeMultiplatformImportImpl(
level: DependencyResolutionLevel level: DependencyResolutionLevel
) { ) {
registeredDependencyResolvers.add( registeredDependencyResolvers.add(
RegisteredDependencyResolver(statistics, resolver, constraint, phase, level) RegisteredDependencyResolver(extension.project.kotlinIdeMultiplatformImportStatistics, resolver, constraint, phase, level)
) )
if (resolver is IdeDependencyResolver.WithBuildDependencies) { if (resolver is IdeDependencyResolver.WithBuildDependencies) {
@@ -5,6 +5,15 @@
package org.jetbrains.kotlin.gradle.plugin.ide package org.jetbrains.kotlin.gradle.plugin.ide
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.utils.getOrPut
internal val Project.kotlinIdeMultiplatformImportStatistics: IdeMultiplatformImportStatistics
get() = extensions.extraProperties.getOrPut(IdeMultiplatformImportStatistics::class.java.name) {
IdeMultiplatformImportStatistics()
}
/** /**
* Simple implementation to track dependency resolution bottlenecks. * Simple implementation to track dependency resolution bottlenecks.
* This will later be replaced by properly tracing ide import. * This will later be replaced by properly tracing ide import.
@@ -59,7 +59,7 @@ internal open class IdeResolveDependenciesTask : DefaultTask() {
} }
} }
(project.kotlinIdeMultiplatformImport as? IdeMultiplatformImportImpl)?.statistics?.let { statistics -> project.kotlinIdeMultiplatformImportStatistics.let { statistics ->
val timeStatisticsFile = outputDirectory.resolve("times.txt") val timeStatisticsFile = outputDirectory.resolve("times.txt")
timeStatisticsFile.writeText(buildString { timeStatisticsFile.writeText(buildString {
statistics.getExecutionTimes().forEach { (clazz, time) -> statistics.getExecutionTimes().forEach { (clazz, time) ->