diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsService.kt index a7e4958ab22..5457cdf78ad 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsService.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.build.report.metrics.BuildTime import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord +import org.jetbrains.kotlin.gradle.utils.isProjectIsolationEnabled import org.jetbrains.kotlin.statistics.metrics.NumericalMetrics import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics import java.util.concurrent.ConcurrentHashMap @@ -134,7 +135,7 @@ abstract class BuildMetricsService : BuildService, } //do not need to collect metrics if there aren't consumers for this data - val reportingSettings = reportingSettings(project.rootProject) + val reportingSettings = reportingSettings(project) if (reportingSettings.buildReportOutputs.isEmpty()) { return null } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildReportsService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildReportsService.kt index 31bbc1c9060..c3ccdebafc7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildReportsService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildReportsService.kt @@ -305,7 +305,7 @@ abstract class BuildReportsService : BuildService brt.name == it.trim().toUpperCaseAsciiOnly() } ?: throw IllegalStateException("Unknown output type: $it") @@ -23,7 +25,12 @@ internal fun reportingSettings(rootProject: Project): ReportingSettings { else -> BuildReportMode.VERBOSE } val fileReportSettings = if (buildReportOutputTypes.contains(BuildReportType.FILE)) { - val buildReportDir = properties.buildReportFileOutputDir ?: rootProject.buildDir.resolve("reports/kotlin-build") + val buildReportDir = properties.buildReportFileOutputDir ?: (if (isProjectIsolationEnabled(project.gradle)) { + // TODO: it's a workaround for KT-52963, should be reworked – KT-55763 + project.rootDir.resolve("build") + } else { + project.rootProject.buildDir + }).resolve("reports/kotlin-build") val includeMetricsInReport = properties.buildReportMetrics || buildReportMode == BuildReportMode.VERBOSE FileReportSettings(buildReportDir = buildReportDir, includeMetricsInReport = includeMetricsInReport) } else { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index 3a1fbd09361..1187ad38971 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -34,14 +34,14 @@ internal const val COMMON_MAIN_ELEMENTS_CONFIGURATION_NAME = "commonMainMetadata internal const val ALL_COMPILE_METADATA_CONFIGURATION_NAME = "allSourceSetsCompileDependenciesMetadata" internal val Project.isKotlinGranularMetadataEnabled: Boolean - get() = project.pm20ExtensionOrNull != null || with(PropertiesProvider(rootProject)) { + get() = project.pm20ExtensionOrNull != null || with(PropertiesProvider(this)) { mppHierarchicalStructureByDefault || // then we want to use KLIB granular compilation & artifacts even if it's just commonMain hierarchicalStructureSupport || enableGranularSourceSetsMetadata == true } internal val Project.shouldCompileIntermediateSourceSetsToMetadata: Boolean - get() = project.pm20ExtensionOrNull != null || with(PropertiesProvider(rootProject)) { + get() = project.pm20ExtensionOrNull != null || with(PropertiesProvider(this)) { when { !hierarchicalStructureSupport && mppHierarchicalStructureByDefault -> false else -> true