From 268526dc732f1bc0ea25c4b5d64fb3a013c2efd0 Mon Sep 17 00:00:00 2001 From: KotlinIsland <65446343+KotlinIsland@users.noreply.github.com> Date: Thu, 13 Apr 2023 05:51:50 +1000 Subject: [PATCH] Enable Gradle Kotlin DSL Lazy Property Assignment Enable Gradle Kotlin DSL Lazy Property Assignment --------- Co-authored-by: KotlinIsland Co-authored-by: Jakub Chrzanowski --- .github/template-cleanup/gradle.properties | 3 ++ CHANGELOG.md | 1 + build.gradle.kts | 48 +++++++++++----------- gradle.properties | 3 ++ 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/.github/template-cleanup/gradle.properties b/.github/template-cleanup/gradle.properties index f8038a5..1abca01 100644 --- a/.github/template-cleanup/gradle.properties +++ b/.github/template-cleanup/gradle.properties @@ -27,5 +27,8 @@ kotlin.stdlib.default.dependency = false # Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html org.gradle.unsafe.configuration-cache = true +# Enable Gradle Kotlin DSL Lazy Property Assignment -> https://docs.gradle.org/current/userguide/kotlin_dsl.html#kotdsl:assignment +systemProp.org.gradle.unsafe.kotlin.assignment = true + # Temporary workaround for Kotlin Compiler OutOfMemoryError -> https://jb.gg/intellij-platform-kotlin-oom kotlin.incremental.useClasspathSnapshot = false diff --git a/CHANGELOG.md b/CHANGELOG.md index 68c2adf..b382d3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Added - Temporary workaround for Kotlin Compiler OutOfMemoryError -> https://jb.gg/intellij-platform-kotlin-oom - Gradle version catalog integration +- Gradle Kotlin DSL Lazy Property Assignment ### Changed - Dependencies - upgrade `org.jetbrains.intellij` to `1.13.3` diff --git a/build.gradle.kts b/build.gradle.kts index 5b2ba8c..74a6c3e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,8 @@ plugins { alias(libs.plugins.kover) // Gradle Kover Plugin } -group = properties("pluginGroup").get() -version = properties("pluginVersion").get() +group = properties("pluginGroup") +version = properties("pluginVersion") // Configure project's dependencies repositories { @@ -33,31 +33,31 @@ kotlin { // Configure Gradle IntelliJ Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html intellij { - pluginName.set(properties("pluginName")) - version.set(properties("platformVersion")) - type.set(properties("platformType")) + pluginName = properties("pluginName") + version = properties("platformVersion") + type = properties("platformType") // Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file. - plugins.set(properties("platformPlugins").map { it.split(',').map(String::trim).filter(String::isNotEmpty) }) + plugins = properties("platformPlugins").map { it.split(',').map(String::trim).filter(String::isNotEmpty) } } // Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin changelog { groups.empty() - repositoryUrl.set(properties("pluginRepositoryUrl")) + repositoryUrl = properties("pluginRepositoryUrl") } // Configure Gradle Qodana Plugin - read more: https://github.com/JetBrains/gradle-qodana-plugin qodana { - cachePath.set(provider { file(".qodana").canonicalPath }) - reportPath.set(provider { file("build/reports/inspections").canonicalPath }) - saveReport.set(true) - showReport.set(environment("QODANA_SHOW_REPORT").map { it.toBoolean() }.getOrElse(false)) + cachePath = provider { file(".qodana").canonicalPath } + reportPath = provider { file("build/reports/inspections").canonicalPath } + saveReport = true + showReport = environment("QODANA_SHOW_REPORT").map { it.toBoolean() }.getOrElse(false) } // Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration kover.xmlReport { - onCheck.set(true) + onCheck = true } tasks { @@ -66,12 +66,12 @@ tasks { } patchPluginXml { - version.set(properties("pluginVersion")) - sinceBuild.set(properties("pluginSinceBuild")) - untilBuild.set(properties("pluginUntilBuild")) + version = properties("pluginVersion") + sinceBuild = properties("pluginSinceBuild") + untilBuild = properties("pluginUntilBuild") // Extract the section from README.md and provide for the plugin's manifest - pluginDescription.set(providers.fileContents(layout.projectDirectory.file("README.md")).asText.map { + pluginDescription = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map { val start = "" val end = "" @@ -81,11 +81,11 @@ tasks { } subList(indexOf(start) + 1, indexOf(end)).joinToString("\n").let(::markdownToHTML) } - }) + } val changelog = project.changelog // local variable for configuration cache compatibility // Get the latest available change notes from the changelog file - changeNotes.set(properties("pluginVersion").map { pluginVersion -> + changeNotes = properties("pluginVersion").map { pluginVersion -> with(changelog) { renderItem( (getOrNull(pluginVersion) ?: getUnreleased()) @@ -94,7 +94,7 @@ tasks { Changelog.OutputType.HTML, ) } - }) + } } // Configure UI tests plugin @@ -107,17 +107,17 @@ tasks { } signPlugin { - certificateChain.set(environment("CERTIFICATE_CHAIN")) - privateKey.set(environment("PRIVATE_KEY")) - password.set(environment("PRIVATE_KEY_PASSWORD")) + certificateChain = environment("CERTIFICATE_CHAIN") + privateKey = environment("PRIVATE_KEY") + password = environment("PRIVATE_KEY_PASSWORD") } publishPlugin { dependsOn("patchChangelog") - token.set(environment("PUBLISH_TOKEN")) + token = environment("PUBLISH_TOKEN") // The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3 // Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more: // https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel - channels.set(properties("pluginVersion").map { listOf(it.split('-').getOrElse(1) { "default" }.split('.').first()) }) + channels = properties("pluginVersion").map { listOf(it.split('-').getOrElse(1) { "default" }.split('.').first()) } } } diff --git a/gradle.properties b/gradle.properties index e74ff69..d427255 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,5 +27,8 @@ kotlin.stdlib.default.dependency = false # Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html org.gradle.unsafe.configuration-cache = true +# Enable Gradle Kotlin DSL Lazy Property Assignment -> https://docs.gradle.org/current/userguide/kotlin_dsl.html#kotdsl:assignment +systemProp.org.gradle.unsafe.kotlin.assignment = true + # Temporary workaround for Kotlin Compiler OutOfMemoryError -> https://jb.gg/intellij-platform-kotlin-oom kotlin.incremental.useClasspathSnapshot = false