diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt index 7fd5bc7b60e..286e980a8c9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt @@ -25,6 +25,12 @@ internal class PlainTextBuildReportWriter( override fun process(build: BuildExecutionData) { try { + outputFile.parentFile.mkdirs() + if (!(outputFile.parentFile.exists() && outputFile.parentFile.isDirectory)) { + log.error("Kotlin build report cannot be created: '$outputFile.parentFile' is a file or do not have permissions to create") + return + } + outputFile.bufferedWriter().use { writer -> p = Printer(writer) printBuildReport(build) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/configureReporing.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/configureReporing.kt index f07adcb59b5..9d60d43c928 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/configureReporing.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/report/configureReporing.kt @@ -66,18 +66,14 @@ private fun configurePlainTextReportWriter( reportingSettings: ReportingSettings ): BuildExecutionDataProcessor? { val log = gradle.rootProject.logger - val reportDir = reportingSettings.buildReportDir!!.apply { mkdirs() } - if (reportDir.isFile) { - log.error("Kotlin build report cannot be created: '$reportDir' is a file") - return null - } - reportDir.mkdirs() - val ts = SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(Calendar.getInstance().time) - val reportFile = reportDir.resolve("${gradle.rootProject.name}-build-$ts.txt") + return reportingSettings.buildReportDir?.let { reportDir -> + val ts = SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(Calendar.getInstance().time) + val reportFile = reportDir.resolve("${gradle.rootProject.name}-build-$ts.txt") - return PlainTextBuildReportWriter( - outputFile = reportFile, - printMetrics = reportingSettings.includeMetricsInReport, - log = log - ) + return PlainTextBuildReportWriter( + outputFile = reportFile, + printMetrics = reportingSettings.includeMetricsInReport, + log = log + ) + } }