From e576ddee86fe509fcdf69fb96367850a5086eab4 Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Mon, 27 May 2024 12:44:29 +0200 Subject: [PATCH] Switch to IJP 242 EAP This in turn requires: 1. Updating the IJP Gradle plugin to 2.0 (beta) 2. Reworking the IDE sample build.gradle.kts in the new 2.0 syntax 3. Bumping the JBR version to 21 --- .gitignore | 25 +++++++++++++++ buildSrc/settings.gradle.kts | 1 + buildSrc/src/main/kotlin/jewel.gradle.kts | 4 +-- .../jetbrains/jewel/window/utils/macos/ID.kt | 1 + gradle.properties | 4 ++- gradle/libs.versions.toml | 14 +++------ ide-laf-bridge/build.gradle.kts | 17 +++++++++- .../ide-laf-bridge-styling/build.gradle.kts | 18 ++++++++++- samples/ide-plugin/build.gradle.kts | 31 ++++++++++--------- .../ideplugin/releasessample/DetailsPanel.kt | 5 ++- samples/standalone/build.gradle.kts | 2 +- .../samples/standalone/reflection/Views.kt | 1 + settings.gradle.kts | 6 ++-- 13 files changed, 92 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index d65c52797..1e5754c75 100644 --- a/.gitignore +++ b/.gitignore @@ -96,3 +96,28 @@ $RECYCLE.BIN/ # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) !gradle-wrapper.jar +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.collaborationTools-2024.2+202.xml +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.collaborationTools-2024.2+277.xml +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.collaborationTools-2024.2+294.xml +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.vcs.impl-2024.2+202.xml +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.vcs.impl-2024.2+277.xml +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.vcs.impl-2024.2+294.xml +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.vcs.log.impl-2024.2+202.xml +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.vcs.log.impl-2024.2+277.xml +/.intellijPlatform/localPlatformArtifacts/bundledModule-intellij.platform.vcs.log.impl-2024.2+294.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.copyright-2024.2+202.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.copyright-2024.2+277.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.copyright-2024.2+294.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.java-2024.2+202.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.java-2024.2+277.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.java-2024.2+294.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.platform.images-2024.2+202.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.platform.images-2024.2+277.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.intellij.platform.images-2024.2+294.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.jetbrains.performancePlugin-2024.2+202.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.jetbrains.performancePlugin-2024.2+277.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-com.jetbrains.performancePlugin-2024.2+294.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-org.jetbrains.kotlin-2024.2+202.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-org.jetbrains.kotlin-2024.2+277.xml +/.intellijPlatform/localPlatformArtifacts/bundledPlugin-org.jetbrains.kotlin-2024.2+294.xml +/.intellijPlatform/self-update.lock diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts index f8d784c5b..795ab6646 100644 --- a/buildSrc/settings.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -7,6 +7,7 @@ rootProject.name = "buildSrc" dependencyResolutionManagement { repositories { google() + maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") gradlePluginPortal() mavenCentral() } diff --git a/buildSrc/src/main/kotlin/jewel.gradle.kts b/buildSrc/src/main/kotlin/jewel.gradle.kts index 715f9e220..e081d37c5 100644 --- a/buildSrc/src/main/kotlin/jewel.gradle.kts +++ b/buildSrc/src/main/kotlin/jewel.gradle.kts @@ -19,14 +19,14 @@ version = when { java { toolchain { vendor = JvmVendorSpec.JETBRAINS - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(21) } } kotlin { jvmToolchain { vendor = JvmVendorSpec.JETBRAINS - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(21) } target { diff --git a/decorated-window/src/main/kotlin/org/jetbrains/jewel/window/utils/macos/ID.kt b/decorated-window/src/main/kotlin/org/jetbrains/jewel/window/utils/macos/ID.kt index 434817538..80ebd59c3 100644 --- a/decorated-window/src/main/kotlin/org/jetbrains/jewel/window/utils/macos/ID.kt +++ b/decorated-window/src/main/kotlin/org/jetbrains/jewel/window/utils/macos/ID.kt @@ -6,6 +6,7 @@ import com.sun.jna.NativeLong * Could be an address in memory (if pointer to a class or method) or a * value (like 0 or 1) */ +@Suppress("OVERRIDE_DEPRECATION") // Copied code internal class ID : NativeLong { constructor() constructor(peer: Long) : super(peer) diff --git a/gradle.properties b/gradle.properties index 82d8cb4b2..ac0ae76d1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,5 +6,7 @@ kotlin.stdlib.default.dependency=false # See https://jb.gg/intellij-platform-kotlin-oom kotlin.incremental.useClasspathSnapshot=false -ijp.target=241 +org.jetbrains.intellij.platform.buildFeature.useBinaryReleases=false + +ijp.target=242 jewel.release.version=0.19.7 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 71d1f1d18..2f5e72a96 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,8 +3,8 @@ commonmark = "0.22.0" composeDesktop = "1.7.0-dev1703" detekt = "1.23.6" dokka = "1.9.20" -idea = "241.17890.1" -ideaGradlePlugin = "1.17.3" +idea = "242.19533.56-EAP-SNAPSHOT" +ideaPlugin = "2.0.0-beta8" jna = "5.14.0" kotlin = "1.9.24" kotlinSarif = "0.5.0" @@ -24,10 +24,6 @@ kotlinSarif = { module = "io.github.detekt.sarif4k:sarif4k", version.ref = "kotl kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" } -ij-platform-ide-core = { module = "com.jetbrains.intellij.platform:ide-core", version.ref = "idea" } -ij-platform-ide-impl = { module = "com.jetbrains.intellij.platform:ide-impl", version.ref = "idea" } -ij-platform-core-ui = { module = "com.jetbrains.intellij.platform:core-ui", version.ref = "idea" } - jna-core = { module = "net.java.dev.jna:jna", version.ref = "jna" } # Plugin libraries for build-logic's convention plugins to use to resolve the types/tasks coming from these plugins @@ -39,14 +35,12 @@ kotlinter-gradlePlugin = { module = "org.jmailen.gradle:kotlinter-gradle", versi kotlinx-binaryCompatValidator-gradlePlugin = { module = "org.jetbrains.kotlinx:binary-compatibility-validator", version.ref = "kotlinxBinaryCompat" } poko-gradlePlugin = { module = "dev.drewhamilton.poko:poko-gradle-plugin", version.ref = "poko" } -[bundles] -idea = ["ij-platform-ide-core", "ij-platform-ide-impl", "ij-platform-core-ui"] - [plugins] composeDesktop = { id = "org.jetbrains.compose", version.ref = "composeDesktop" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } -ideaGradlePlugin = { id = "org.jetbrains.intellij", version.ref = "ideaGradlePlugin" } +ideaPlugin = { id = "org.jetbrains.intellij.platform", version.ref = "ideaPlugin" } +ideaPluginModule = { id = "org.jetbrains.intellij.platform.base", version.ref = "ideaPlugin" } kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlinx-binaryCompatValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinxBinaryCompat" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } diff --git a/ide-laf-bridge/build.gradle.kts b/ide-laf-bridge/build.gradle.kts index d2fc3ab3c..c7a63b4c6 100644 --- a/ide-laf-bridge/build.gradle.kts +++ b/ide-laf-bridge/build.gradle.kts @@ -4,6 +4,19 @@ plugins { `jewel-check-public-api` `ide-version-checker` alias(libs.plugins.composeDesktop) + alias(libs.plugins.ideaPluginModule) +} + +// Because we need to define IJP dependencies, the dependencyResolutionManagement +// from settings.gradle.kts is overridden and we have to redeclare everything here. +repositories { + google() + maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") + mavenCentral() + + intellijPlatform { + defaultRepositories() + } } dependencies { @@ -11,7 +24,9 @@ dependencies { exclude(group = "org.jetbrains.kotlinx") } - compileOnly(libs.bundles.idea) + intellijPlatform { + intellijIdeaCommunity(libs.versions.idea) + } testImplementation(compose.desktop.uiTestJUnit4) testImplementation(compose.desktop.currentOs) { diff --git a/markdown/ide-laf-bridge-styling/build.gradle.kts b/markdown/ide-laf-bridge-styling/build.gradle.kts index 0e7c019fb..0dea0e440 100644 --- a/markdown/ide-laf-bridge-styling/build.gradle.kts +++ b/markdown/ide-laf-bridge-styling/build.gradle.kts @@ -3,13 +3,29 @@ plugins { `jewel-publish` `jewel-check-public-api` alias(libs.plugins.composeDesktop) + alias(libs.plugins.ideaPluginModule) +} + +// Because we need to define IJP dependencies, the dependencyResolutionManagement +// from settings.gradle.kts is overridden and we have to redeclare everything here. +repositories { + google() + maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") + mavenCentral() + + intellijPlatform { + defaultRepositories() + } } dependencies { api(projects.markdown.core) api(projects.ideLafBridge) compileOnly(projects.markdown.extension.gfmAlerts) - compileOnly(libs.bundles.idea) + + intellijPlatform { + intellijIdeaCommunity(libs.versions.idea) + } testImplementation(compose.desktop.uiTestJUnit4) } diff --git a/samples/ide-plugin/build.gradle.kts b/samples/ide-plugin/build.gradle.kts index 8bc029650..0e03f103b 100644 --- a/samples/ide-plugin/build.gradle.kts +++ b/samples/ide-plugin/build.gradle.kts @@ -1,28 +1,27 @@ plugins { jewel alias(libs.plugins.composeDesktop) - alias(libs.plugins.ideaGradlePlugin) + alias(libs.plugins.ideaPlugin) `android-studio-releases-generator` } - -intellij { - pluginName = "Jewel Demo" - plugins = listOf("org.jetbrains.kotlin") - version = libs.versions.idea.get() -} - -// TODO remove this once the IJ Gradle plugin fixes their repositories bug -// See https://github.com/JetBrains/gradle-intellij-plugin/issues/776 +// Because we need to define IJP dependencies, the dependencyResolutionManagement +// from settings.gradle.kts is overridden and we have to redeclare everything here. repositories { - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - maven("https://www.jetbrains.com/intellij-repository/releases") - maven("https://cache-redirector.jetbrains.com/intellij-dependencies") google() + maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") mavenCentral() - + + intellijPlatform { + defaultRepositories() + } } dependencies { + intellijPlatform { + intellijIdeaCommunity(libs.versions.idea) + instrumentationTools() + } + implementation(projects.ideLafBridge) { exclude(group = "org.jetbrains.kotlinx") } @@ -37,6 +36,10 @@ dependencies { } } +intellijPlatform { + pluginConfiguration { name = "Jewel Demo" } +} + tasks { // We don't have any settings in the demo plugin buildSearchableOptions { diff --git a/samples/ide-plugin/src/main/kotlin/org/jetbrains/jewel/samples/ideplugin/releasessample/DetailsPanel.kt b/samples/ide-plugin/src/main/kotlin/org/jetbrains/jewel/samples/ideplugin/releasessample/DetailsPanel.kt index 4e0268129..82aa50ee1 100644 --- a/samples/ide-plugin/src/main/kotlin/org/jetbrains/jewel/samples/ideplugin/releasessample/DetailsPanel.kt +++ b/samples/ide-plugin/src/main/kotlin/org/jetbrains/jewel/samples/ideplugin/releasessample/DetailsPanel.kt @@ -5,11 +5,10 @@ import com.intellij.ui.components.JBScrollPane import com.intellij.ui.dsl.builder.BottomGap import com.intellij.ui.dsl.builder.Panel import com.intellij.ui.dsl.builder.panel -import com.intellij.ui.scale.JBUIScale.scale -import com.intellij.ui.util.maximumHeight import com.intellij.util.ImageLoader import com.intellij.util.ui.ComponentWithEmptyText import com.intellij.util.ui.ImageUtil +import com.intellij.util.ui.JBDimension import com.intellij.util.ui.JBFont import com.intellij.util.ui.JBUI import com.intellij.util.ui.components.BorderLayoutPanel @@ -49,7 +48,7 @@ private class ItemDetailsPanel( if (bufferedImage != null) { val imageContainer = ImageComponent(scope).apply { - maximumHeight = scale(200) + maximumSize = JBDimension(Int.MAX_VALUE, 200) image = bufferedImage } diff --git a/samples/standalone/build.gradle.kts b/samples/standalone/build.gradle.kts index 2d8714780..fd1c5032d 100644 --- a/samples/standalone/build.gradle.kts +++ b/samples/standalone/build.gradle.kts @@ -49,7 +49,7 @@ tasks { // register the task in the afterEvaluate block afterEvaluate { javaLauncher = project.javaToolchains.launcherFor { - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(21) vendor = JvmVendorSpec.JETBRAINS } setExecutable(javaLauncher.map { it.executablePath.asFile.absolutePath }.get()) diff --git a/samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/reflection/Views.kt b/samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/reflection/Views.kt index 26ecf1d6f..2bc4aa185 100644 --- a/samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/reflection/Views.kt +++ b/samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/reflection/Views.kt @@ -49,6 +49,7 @@ internal fun findViews(packageName: String): List { val kFunc = it.kotlinFunction ?: return@mapNotNull null if (kFunc.parameters.isNotEmpty() || kFunc.returnType.classifier != Unit::class) return@mapNotNull null + @Suppress("UNCHECKED_CAST") ViewInfo( title = annotation.title, position = annotation.position, diff --git a/settings.gradle.kts b/settings.gradle.kts index 69a2b6a3e..504a8b9f5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,9 +6,10 @@ rootProject.name = "jewel" pluginManagement { repositories { - gradlePluginPortal() maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/") maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") + maven("https://oss.sonatype.org/content/repositories/snapshots/") + gradlePluginPortal() mavenCentral() } } @@ -17,9 +18,6 @@ dependencyResolutionManagement { repositories { google() maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - maven("https://www.jetbrains.com/intellij-repository/releases") - maven("https://www.jetbrains.com/intellij-repository/snapshots") - maven("https://cache-redirector.jetbrains.com/intellij-dependencies") mavenCentral() } }