From 6e9fdb506885fca1ffad16f12e4265f0a596e07c Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Thu, 7 Nov 2024 10:06:18 +0100 Subject: [PATCH] Upgrade CMP IJ Plugin dependencies & setup (#5137) This PR prepares the IJ plugin to be fixed/improved upon by a follow-up PR, by: 1. Migrating to IJP Gradle plugin 2.1 2. Upgrading Gradle to 8.10 3. Bumping IJ target to 2024.2.1 4. Cleaning up after migration --------- Co-authored-by: Victor Kropp (cherry picked from commit 224704b0854d645bf132d6b516a68aa011b719eb) --- idea-plugin/build.gradle.kts | 80 +++++++++---------- idea-plugin/gradle.properties | 7 -- idea-plugin/gradle/libs.versions.toml | 11 +-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 45 insertions(+), 55 deletions(-) diff --git a/idea-plugin/build.gradle.kts b/idea-plugin/build.gradle.kts index c5af9c2bef..015802688a 100644 --- a/idea-plugin/build.gradle.kts +++ b/idea-plugin/build.gradle.kts @@ -1,76 +1,72 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile plugins { id("java") alias(libs.plugins.kotlin.jvm) - alias(libs.plugins.intellij.sdk) + alias(libs.plugins.intellij.plugin) alias(libs.plugins.intellij.changelog) } val projectProperties = ProjectProperties(project) group = "org.jetbrains.compose.desktop.ide" + version = projectProperties.deployVersion repositories { mavenCentral() + + intellijPlatform { defaultRepositories() } } dependencies { implementation("org.jetbrains.compose:preview-rpc") -} -intellij { - pluginName.set("Compose Multiplatform IDE Support") - type.set(projectProperties.platformType) - version.set(projectProperties.platformVersion) - downloadSources.set(projectProperties.platformDownloadSources) - updateSinceUntilBuild.set(false) - - plugins.set( - listOf( - "java", - "com.intellij.gradle", - "org.jetbrains.kotlin" - ) - ) -} + intellijPlatform { + intellijIdeaCommunity(libs.versions.idea) + instrumentationTools() -tasks.buildSearchableOptions { - // temporary workaround - enabled = false + bundledPlugins("com.intellij.java", "org.jetbrains.kotlin", "com.intellij.gradle") + } } -tasks { - // Set the compatibility versions to 1.8 - withType { - sourceCompatibility = "11" - targetCompatibility = "11" - } - withType { - kotlinOptions.jvmTarget = "11" +intellijPlatform { + pluginConfiguration { + name = "Compose Multiplatform IDE Support" + ideaVersion { + sinceBuild = "231.*" + untilBuild = "243.*" + } } + buildSearchableOptions = false + autoReload = false - publishPlugin { - token.set(System.getenv("IDE_PLUGIN_PUBLISH_TOKEN")) - channels.set(projectProperties.pluginChannels) + publishing { + token = System.getenv("IDE_PLUGIN_PUBLISH_TOKEN") + channels = projectProperties.pluginChannels } - runPluginVerifier { - ideVersions.set(projectProperties.pluginVerifierIdeVersions) + pluginVerification { ides { recommended() } } +} + +tasks { + withType { + sourceCompatibility = "21" + targetCompatibility = "21" } + withType { compilerOptions.jvmTarget.set(JvmTarget.JVM_21) } } class ProjectProperties(private val project: Project) { - val deployVersion get() = stringProperty("deploy.version") - val platformType get() = stringProperty("platform.type") - val platformVersion get() = stringProperty("platform.version") - val platformDownloadSources get() = stringProperty("platform.download.sources").toBoolean() - val pluginChannels get() = listProperty("plugin.channels") - val pluginVerifierIdeVersions get() = listProperty("plugin.verifier.ide.versions") - - private fun stringProperty(key: String): String = - project.findProperty(key)!!.toString() + val deployVersion + get() = stringProperty("deploy.version") + + val pluginChannels + get() = listProperty("plugin.channels") + + private fun stringProperty(key: String): String = project.findProperty(key)!!.toString() + private fun listProperty(key: String): List = stringProperty(key).split(",").map { it.trim() } } diff --git a/idea-plugin/gradle.properties b/idea-plugin/gradle.properties index 0ee97128d8..e9c5385943 100644 --- a/idea-plugin/gradle.properties +++ b/idea-plugin/gradle.properties @@ -5,10 +5,3 @@ kotlin.stdlib.default.dependency=false deploy.version=0.1-SNAPSHOT plugin.channels=snapshots -# Intellij since-build should be updated directly in src/main/resources/META-INF/plugin.xml -# See https://jb.gg/intellij-platform-builds-list for available build versions. -plugin.verifier.ide.versions=2022.1, 2022.2, 2022.3 - -platform.type=IC -platform.version=2022.1.1 -platform.download.sources=true diff --git a/idea-plugin/gradle/libs.versions.toml b/idea-plugin/gradle/libs.versions.toml index cb3034a5a8..b4f88efcb3 100644 --- a/idea-plugin/gradle/libs.versions.toml +++ b/idea-plugin/gradle/libs.versions.toml @@ -1,9 +1,10 @@ [versions] -kotlin = "1.9.0" - -[libraries] +kotlin = "1.9.23" +ideaPlugin = "2.1.0" +idea = "2024.2.1" +changelog = "2.2.0" [plugins] kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } -intellij-sdk = "org.jetbrains.intellij:1.15.0" -intellij-changelog = "org.jetbrains.changelog:2.2.0" +intellij-plugin = { id = "org.jetbrains.intellij.platform", version.ref = "ideaPlugin" } +intellij-changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" } diff --git a/idea-plugin/gradle/wrapper/gradle-wrapper.properties b/idea-plugin/gradle/wrapper/gradle-wrapper.properties index db9a6b825d..9a0a0e28c9 100644 --- a/idea-plugin/gradle/wrapper/gradle-wrapper.properties +++ b/idea-plugin/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists