This is an automated email from the ASF dual-hosted git repository. jdaugherty pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/grails-intellij-plugin.git
commit 3207cddc04779d60fca109c7920ab8bd4fc51959 Author: James Daugherty <[email protected]> AuthorDate: Sat Jul 18 19:19:17 2026 -0400 Update to IntelliJ 2026.2 and Java 25 --- .sdkmanrc | 2 +- README.md | 4 ++-- build.gradle.kts | 9 +++++++-- copyright/build.gradle.kts | 1 + .../resources/intellij.groovy.grails.copyright.xml | 1 + .../grails/copyright/UpdateGspCopyrightsProvider.java | 2 +- coverage/build.gradle.kts | 5 ++++- gradle-tooling/build.gradle.kts | 2 +- gradle.properties | 8 ++++---- grails-compiler-patch/build.gradle.kts | 14 +++++++++++++- .../grails/compiler/Grails2_0_JUnitPatcher.java | 10 ---------- i18n/build.gradle.kts | 5 ++++- maven/build.gradle.kts | 6 +++++- .../plugins/groovy/mvc/plugins/MvcPluginsMain.java | 19 ++++--------------- .../mvc/util/MvcTargetDialogCompletionUtils.java | 2 +- testFramework/build.gradle.kts | 6 +++++- .../openapi/roots/ui/configuration/SdkTestCase.kt | 3 ++- .../gradle/importing/GradleImportingTestCase.kt | 5 +++-- 18 files changed, 59 insertions(+), 45 deletions(-) diff --git a/.sdkmanrc b/.sdkmanrc index c806064..6c9c869 100644 --- a/.sdkmanrc +++ b/.sdkmanrc @@ -15,5 +15,5 @@ # # Enable auto-env through the sdkman_auto_env config # Add key=value pairs of SDKs to use below -java=21.0.7-librca +java=25.0.3-librca gradle=9.3.1 diff --git a/README.md b/README.md index 2380a01..c10abb1 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ This codebase was originally developed by JetBrains s.r.o. and imported from ## Requirements -- IntelliJ IDEA Ultimate 2025.3+ (`sinceBuild` 253) -- Java 21 (the `grails-rt`, `grails-compiler-patch`, and `jps-plugin` modules target Java 8/11) +- IntelliJ IDEA Ultimate 2026.2+ (`sinceBuild` 262) +- Java 25 (the `grails-rt`, `grails-compiler-patch`, and `jps-plugin` modules target Java 8/11) ## Building diff --git a/build.gradle.kts b/build.gradle.kts index 65d8d40..752a87b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -21,7 +21,7 @@ fun properties(key: String) = project.findProperty(key).toString() plugins { id("java") id("org.jetbrains.kotlin.jvm") version "2.3.0" - id("org.jetbrains.intellij.platform") version "2.11.0" + id("org.jetbrains.intellij.platform") version "2.18.1" id("org.nosphere.apache.rat") version "0.8.1" } @@ -40,6 +40,7 @@ dependencies { intellijIdea(properties("platformVersion")) bundledPlugin("com.intellij.javaee") + bundledPlugin("com.intellij.javaee.el") // no longer transitive in 2026.2 bundledPlugin("com.intellij.persistence") bundledPlugin("com.intellij.javaee.jpa") bundledPlugin("com.intellij.jsp") @@ -47,6 +48,7 @@ dependencies { bundledPlugin("org.intellij.groovy") bundledPlugin("com.intellij.database") bundledPlugin("com.intellij.spring") + bundledPlugin("com.intellij.gradle") // split out of org.jetbrains.plugins.gradle in 2026.2 bundledPlugin("org.jetbrains.plugins.gradle") bundledPlugin("com.intellij.modules.ultimate") bundledPlugin("com.intellij.microservices.jvm") @@ -88,7 +90,10 @@ dependencies { } kotlin { - jvmToolchain(21) + // no toolchain on purpose: the JDK is pinned via .sdkmanrc for reproducible builds + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.fromTarget(properties("platformJavaVersion")) + } } java.sourceSets["main"].java { diff --git a/copyright/build.gradle.kts b/copyright/build.gradle.kts index 5187251..38f9895 100644 --- a/copyright/build.gradle.kts +++ b/copyright/build.gradle.kts @@ -35,6 +35,7 @@ dependencies { intellijIdea(properties("platformVersion")) bundledPlugin("com.intellij.copyright") bundledPlugin("com.intellij.jsp") + bundledModule("intellij.javaee.jsp.copyright") // UpdateJspFileCopyright moved here in 2026.2 } compileOnly(project(":")) diff --git a/copyright/resources/intellij.groovy.grails.copyright.xml b/copyright/resources/intellij.groovy.grails.copyright.xml index 5493b48..c5cef17 100644 --- a/copyright/resources/intellij.groovy.grails.copyright.xml +++ b/copyright/resources/intellij.groovy.grails.copyright.xml @@ -17,6 +17,7 @@ <dependencies> <plugin id="com.intellij.copyright"/> + <module name="intellij.javaee.jsp.copyright"/> </dependencies> <extensions defaultExtensionNs="com.intellij.copyright"> diff --git a/copyright/src/com/intellij/groovy/grails/copyright/UpdateGspCopyrightsProvider.java b/copyright/src/com/intellij/groovy/grails/copyright/UpdateGspCopyrightsProvider.java index ec43b70..b170e50 100644 --- a/copyright/src/com/intellij/groovy/grails/copyright/UpdateGspCopyrightsProvider.java +++ b/copyright/src/com/intellij/groovy/grails/copyright/UpdateGspCopyrightsProvider.java @@ -16,7 +16,7 @@ package com.intellij.groovy.grails.copyright; -import com.intellij.jsp.copyright.UpdateJspFileCopyright; +import com.intellij.javaee.jsp.copyright.UpdateJspFileCopyright; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; diff --git a/coverage/build.gradle.kts b/coverage/build.gradle.kts index 7179040..fc80521 100644 --- a/coverage/build.gradle.kts +++ b/coverage/build.gradle.kts @@ -25,7 +25,10 @@ plugins { group = "org.apache.grails.intellij.coverage" kotlin { - jvmToolchain(21) + // no toolchain on purpose: the JDK is pinned via .sdkmanrc for reproducible builds + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.fromTarget(properties("platformJavaVersion")) + } } repositories { diff --git a/gradle-tooling/build.gradle.kts b/gradle-tooling/build.gradle.kts index cd72d01..5342b51 100644 --- a/gradle-tooling/build.gradle.kts +++ b/gradle-tooling/build.gradle.kts @@ -32,7 +32,7 @@ repositories { dependencies { intellijPlatform { intellijIdea(properties("platformVersion")) - bundledPlugin("org.jetbrains.plugins.gradle") + bundledPlugin("com.intellij.gradle") } } diff --git a/gradle.properties b/gradle.properties index d864f09..4b6cf1a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,10 +11,10 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -platformVersion=2025.3.1 -platformJavaVersion=21 -pluginSinceBuild=253 -version=253.0.0 +platformVersion=2026.2 +platformJavaVersion=25 +pluginSinceBuild=262 +version=262.0.0 kotlin.stdlib.default.dependency=false diff --git a/grails-compiler-patch/build.gradle.kts b/grails-compiler-patch/build.gradle.kts index 3743068..b897f13 100644 --- a/grails-compiler-patch/build.gradle.kts +++ b/grails-compiler-patch/build.gradle.kts @@ -35,7 +35,18 @@ dependencies { bundledPlugin("org.intellij.groovy") } - compileOnly("org.grails:grails-core:1.2.0") + compileOnly("org.grails:grails-core:1.2.0") { + exclude(group = "org.codehaus.groovy") // groovy pinned explicitly below + } + // era-correct Groovy for the Grails 1.x/2.x patchers (superset of the APIs used); + // must NOT be the IDE's bundled Groovy 5 — see compileClasspath exclusion below + compileOnly("org.codehaus.groovy:groovy-all:2.4.21") +} + +// this patch runs inside Grails 2.x builds, so it must compile against the era-correct +// Groovy (groovy-all 1.6.7 via grails-core above), not the IDE's bundled Groovy 5 +configurations.compileClasspath { + exclude(group = "bundledPlugin", module = "com.intellij.groovy.scripting") } java.sourceSets["main"].java { @@ -54,3 +65,4 @@ tasks { } } + diff --git a/grails-compiler-patch/src/org/jetbrains/groovy/grails/compiler/Grails2_0_JUnitPatcher.java b/grails-compiler-patch/src/org/jetbrains/groovy/grails/compiler/Grails2_0_JUnitPatcher.java index bb175f9..0f26902 100644 --- a/grails-compiler-patch/src/org/jetbrains/groovy/grails/compiler/Grails2_0_JUnitPatcher.java +++ b/grails-compiler-patch/src/org/jetbrains/groovy/grails/compiler/Grails2_0_JUnitPatcher.java @@ -45,11 +45,6 @@ public class Grails2_0_JUnitPatcher extends CompilationUnitPatcher { source.getAST().addStaticStarImport(null, ClassHelper.make("org.junit.Assert")); } } - - @Override - public void doPhaseOperation(CompilationUnit unit) throws CompilationFailedException { - super.doPhaseOperation(unit); - } }, Phases.CONVERSION); compilationUnit.addPhaseOperation(new CompilationUnit.PrimaryClassNodeOperation() { @@ -87,11 +82,6 @@ public class Grails2_0_JUnitPatcher extends CompilationUnitPatcher { } } } - - @Override - public void doPhaseOperation(CompilationUnit unit) throws CompilationFailedException { - super.doPhaseOperation(unit); - } }, Phases.INSTRUCTION_SELECTION); } diff --git a/i18n/build.gradle.kts b/i18n/build.gradle.kts index ec39ac8..a6d878c 100644 --- a/i18n/build.gradle.kts +++ b/i18n/build.gradle.kts @@ -41,7 +41,10 @@ dependencies { } kotlin { - jvmToolchain(21) + // no toolchain on purpose: the JDK is pinned via .sdkmanrc for reproducible builds + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.fromTarget(properties("platformJavaVersion")) + } } java.sourceSets["main"].java { diff --git a/maven/build.gradle.kts b/maven/build.gradle.kts index e72f696..87a97f8 100644 --- a/maven/build.gradle.kts +++ b/maven/build.gradle.kts @@ -24,7 +24,10 @@ plugins { group = "org.apache.grails.intellij.maven" kotlin { - jvmToolchain(21) + // no toolchain on purpose: the JDK is pinned via .sdkmanrc for reproducible builds + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.fromTarget(properties("platformJavaVersion")) + } } repositories { @@ -38,6 +41,7 @@ dependencies { intellijPlatform { intellijIdea(properties("platformVersion")) bundledPlugin("org.jetbrains.idea.maven") + bundledPlugin("com.intellij.java") // java debugger classes moved into the java plugin modules in 2026.2 } compileOnly(project(":grails-rt")) diff --git a/src/org/jetbrains/plugins/groovy/mvc/plugins/MvcPluginsMain.java b/src/org/jetbrains/plugins/groovy/mvc/plugins/MvcPluginsMain.java index bd7377e..9d9037c 100644 --- a/src/org/jetbrains/plugins/groovy/mvc/plugins/MvcPluginsMain.java +++ b/src/org/jetbrains/plugins/groovy/mvc/plugins/MvcPluginsMain.java @@ -54,7 +54,6 @@ import org.jetbrains.plugins.grails.runner.GrailsConsole; import org.jetbrains.plugins.grails.structure.OldGrailsApplication; import org.jetbrains.plugins.groovy.mvc.plugins.actions.AddCustomPluginAction; import org.jetbrains.plugins.groovy.mvc.plugins.actions.ReloadMvcPluginListAction; -import org.jdom.Element; import javax.swing.JButton; import javax.swing.JComponent; @@ -140,19 +139,9 @@ public class MvcPluginsMain { @SuppressWarnings("deprecation") @Override public void actionPerformed(@NotNull ActionEvent e) { - HttpConfigurable cfg; - - Element serializedCfg = new Element("root"); - try { - HttpConfigurable.getInstance().writeExternal(serializedCfg); - cfg = new HttpConfigurable(); - cfg.readExternal(serializedCfg); - } - catch (Exception e1) { - throw new RuntimeException(e1); - } - - doEditProxySettings(cfg); + // 2026.2: HttpConfigurable can no longer be cloned via read/writeExternal and + // HttpProxyConfigurable edits the global proxy settings directly + doEditProxySettings(HttpConfigurable.getInstance()); } }); @@ -184,7 +173,7 @@ public class MvcPluginsMain { } private void doEditProxySettings(final HttpConfigurable cfg) { - if (!ShowSettingsUtil.getInstance().editConfigurable(main, new HttpProxyConfigurable(cfg))) { + if (!ShowSettingsUtil.getInstance().editConfigurable(main, new HttpProxyConfigurable())) { return; } diff --git a/src/org/jetbrains/plugins/groovy/mvc/util/MvcTargetDialogCompletionUtils.java b/src/org/jetbrains/plugins/groovy/mvc/util/MvcTargetDialogCompletionUtils.java index dec3fc2..bcebad4 100644 --- a/src/org/jetbrains/plugins/groovy/mvc/util/MvcTargetDialogCompletionUtils.java +++ b/src/org/jetbrains/plugins/groovy/mvc/util/MvcTargetDialogCompletionUtils.java @@ -151,7 +151,7 @@ public final class MvcTargetDialogCompletionUtils { public static final MyTailTypeEQ INSTANCE = new MyTailTypeEQ(); @Override - protected boolean isSpaceAroundAssignmentOperators(Editor editor, int tailOffset) { + protected boolean isSpaceAroundAssignmentOperators(PsiFile file, int tailOffset) { return false; } diff --git a/testFramework/build.gradle.kts b/testFramework/build.gradle.kts index dc9f27e..f965f64 100644 --- a/testFramework/build.gradle.kts +++ b/testFramework/build.gradle.kts @@ -34,13 +34,17 @@ repositories { } kotlin { - jvmToolchain(21) + // no toolchain on purpose: the JDK is pinned via .sdkmanrc for reproducible builds + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.fromTarget(properties("platformJavaVersion")) + } } dependencies { intellijPlatform { intellijIdea(properties("platformVersion")) bundledPlugin("org.intellij.groovy") + bundledPlugin("com.intellij.gradle") // split out of org.jetbrains.plugins.gradle in 2026.2 bundledPlugin("org.jetbrains.plugins.gradle") // add to _production_ deps diff --git a/testFramework/src/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt b/testFramework/src/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt index 4c05ec8..ae28376 100644 --- a/testFramework/src/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt +++ b/testFramework/src/com/intellij/openapi/roots/ui/configuration/SdkTestCase.kt @@ -157,7 +157,8 @@ abstract class SdkTestCase : LightPlatformTestCase() { override fun pickSdk(sdkTypeId: SdkTypeId, sdkModel: SdkModel, parentComponent: JComponent, - selectedSdk: Sdk?): SdkDownloadTask? = null + selectedSdk: Sdk?, + filter: java.util.function.Predicate<com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkItem>?): SdkDownloadTask? = null } object TestSdkGenerator { diff --git a/testFramework/src/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.kt b/testFramework/src/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.kt index 82537e1..45d6b9a 100644 --- a/testFramework/src/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.kt +++ b/testFramework/src/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.kt @@ -17,7 +17,7 @@ package org.jetbrains.plugins.gradle.importing -import com.intellij.compiler.CompilerTestUtil +import com.intellij.compiler.server.BuildManager import com.intellij.concurrency.IdeaForkJoinWorkerThreadFactory import com.intellij.execution.RunManagerEx import com.intellij.execution.process.ProcessOutputType @@ -233,7 +233,8 @@ abstract class GradleImportingTestCase : JavaExternalSystemImportingTestCase() { }, { TestDialogManager.setTestDialog(TestDialog.DEFAULT) - CompilerTestUtil.deleteBuildSystemDirectory(myProject) + // inlined from CompilerTestUtil.deleteBuildSystemDirectory (removed in 2026.2) + BuildManager.getInstance()?.getBuildSystemDirectory(myProject)?.let { com.intellij.openapi.util.io.FileUtil.delete(it.toFile()) } }, { deprecationError.set(null) }, { tearDownGradleVmOptions() },
