Register BuildReportsService as task completion listener

This will trigger service instantiation on configuration cache reuse
even when all tasks are up-to-date.

^KT-27301 In Progress
This commit is contained in:
Yahor Berdnikau
2022-09-15 09:03:53 +02:00
parent b2f03f6224
commit 6a6bcda298
2 changed files with 13 additions and 7 deletions
@@ -241,13 +241,16 @@ class ConfigurationCacheIT : AbstractConfigurationCacheIT() {
@DisplayName("with build report") @DisplayName("with build report")
@GradleTest @GradleTest
fun testBuildReportSmokeTestForConfigurationCache(gradleVersion: GradleVersion) { fun testBuildReportSmokeTestForConfigurationCache(gradleVersion: GradleVersion) {
project("simpleProject", gradleVersion) { project(
val buildOptions = defaultBuildOptions.copy(buildReport = listOf(BuildReportType.FILE)) "simpleProject",
build("assemble", buildOptions = buildOptions) { gradleVersion,
buildOptions = defaultBuildOptions.copy(buildReport = listOf(BuildReportType.FILE))
) {
build("assemble") {
assertBuildReportPathIsPrinted() assertBuildReportPathIsPrinted()
} }
build("assemble", buildOptions = buildOptions) { build("assemble") {
assertBuildReportPathIsPrinted() assertBuildReportPathIsPrinted()
} }
} }
@@ -90,9 +90,12 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
KotlinGradleBuildServices.registerIfAbsent(project.gradle).get().detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion) KotlinGradleBuildServices.registerIfAbsent(project.gradle).get().detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion)
BuildMetricsService.registerIfAbsent(project)?.also { BuildMetricsService.registerIfAbsent(project)?.also { buildMetricsService ->
BuildEventsListenerRegistryHolder.getInstance(project).listenerRegistry.onTaskCompletion(it) val buildEventsListenerRegistryHolder = BuildEventsListenerRegistryHolder.getInstance(project)
BuildReportsService.registerIfAbsent(project, it) buildEventsListenerRegistryHolder.listenerRegistry.onTaskCompletion(buildMetricsService)
BuildReportsService.registerIfAbsent(project, buildMetricsService).also {
buildEventsListenerRegistryHolder.listenerRegistry.onTaskCompletion(it)
}
} }
} }