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() },

Reply via email to