Skip to content

Commit 38e78f0

Browse files
authored
Changes to support Release 85 - IntelliJ 2025.1 (#7963)
Changes to support Release 85 - IntelliJ 2025.1 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read the [Flutter Style Guide] _recently_, and have followed its advice. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] All existing and new tests are passing.
1 parent 4aaf24c commit 38e78f0

File tree

10 files changed

+134
-41
lines changed

10 files changed

+134
-41
lines changed

.github/workflows/presubmit.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
strategy:
2222
fail-fast: false
2323
matrix:
24-
version: [2024.1, 2024.2, 2024.3]
24+
version: [2024.1, 2024.2, 2024.3, 2025.1]
2525
steps:
2626
- name: checkout
2727
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683

build.gradle.kts

+24-10
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ plugins {
3737
id("org.jetbrains.kotlin.jvm") version "2.1.0"
3838
}
3939

40+
// TODO(mossmana) These properties are duplicated in flutter-idea/build.gradle.kts and flutter-studio/build.gradle.kts. Should be consolidated.
4041
val flutterPluginVersion = providers.gradleProperty("flutterPluginVersion").get()
4142
val ideaProduct = providers.gradleProperty("ideaProduct").get()
4243
val ideaVersion = providers.gradleProperty("ideaVersion").get()
@@ -45,6 +46,7 @@ val dartPluginVersion = providers.gradleProperty("dartPluginVersion").get()
4546
val androidPluginVersion = providers.gradleProperty("androidPluginVersion").get()
4647
val sinceBuildInput = providers.gradleProperty("sinceBuild").get()
4748
val untilBuildInput = providers.gradleProperty("untilBuild").get()
49+
val javaVersion = providers.gradleProperty("javaVersion").get()
4850
group = "io.flutter"
4951

5052
// For debugging purposes:
@@ -55,32 +57,41 @@ println("dartPluginVersion: $dartPluginVersion")
5557
println("androidPluginVersion: $androidPluginVersion")
5658
println("sinceBuild: $sinceBuildInput")
5759
println("untilBuild: $untilBuildInput")
60+
println("javaVersion: $javaVersion")
5861
println("group: $group")
5962

63+
var jvmVersion = JvmTarget.JVM_17
64+
if (javaVersion == "21") {
65+
jvmVersion = JvmTarget.JVM_21
66+
}
6067
kotlin {
6168
compilerOptions {
6269
apiVersion.set(KotlinVersion.KOTLIN_1_9)
63-
jvmTarget = JvmTarget.JVM_17
70+
jvmTarget = jvmVersion
6471
}
6572
}
66-
val javaCompatibilityVersion = JavaVersion.VERSION_17
73+
74+
var javaCompatibilityVersion = JavaVersion.VERSION_17
75+
if (javaVersion == "21") {
76+
javaCompatibilityVersion = JavaVersion.VERSION_21
77+
}
6778
java {
6879
sourceCompatibility = javaCompatibilityVersion
6980
targetCompatibility = javaCompatibilityVersion
7081
}
7182

7283
dependencies {
7384
intellijPlatform {
74-
// Documentation on the create(...) methods:
75-
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#custom-target-platforms
85+
// Documentation on the default target platform methods:
86+
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#default-target-platforms
7687
if (ideaProduct == "android-studio") {
77-
create(IntelliJPlatformType.AndroidStudio, ideaVersion)
78-
} else {//if (ide == "ideaIC") {
79-
create(IntelliJPlatformType.IntellijIdeaCommunity, ideaVersion)
88+
androidStudio(ideaVersion)
89+
} else { // if (ideaProduct == "IC") {
90+
intellijIdeaCommunity(ideaVersion)
8091
}
8192
testFramework(TestFrameworkType.Platform)
8293

83-
// Plugin dependnecy documentation:
94+
// Plugin dependency documentation:
8495
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#plugins
8596
val bundledPluginList = mutableListOf(
8697
"com.intellij.java",
@@ -90,8 +101,11 @@ dependencies {
90101
"org.jetbrains.kotlin",
91102
"org.jetbrains.plugins.gradle",
92103
"org.intellij.intelliLang",
93-
"com.google.tools.ij.aiplugin",
94-
)
104+
"org.intellij.intelliLang")
105+
// TODO(mossman) - this check should be removed when 2025.1 supports the Gemini Code Assist plugin (https://github.com/flutter/flutter-intellij/issues/7965)
106+
if (ideaVersion.startsWith("225.")) {
107+
bundledPluginList.add("com.google.tools.ij.aiplugin")
108+
}
95109
if (ideaProduct == "android-studio") {
96110
bundledPluginList.add("org.jetbrains.android")
97111
bundledPluginList.add("com.android.tools.idea.smali")

flutter-idea/build.gradle.kts

+22-10
Original file line numberDiff line numberDiff line change
@@ -35,32 +35,42 @@ val dartPluginVersion = providers.gradleProperty("dartPluginVersion").get()
3535
val androidPluginVersion = providers.gradleProperty("androidPluginVersion").get()
3636
val sinceBuildInput = providers.gradleProperty("sinceBuild").get()
3737
val untilBuildInput = providers.gradleProperty("untilBuild").get()
38+
val javaVersion = providers.gradleProperty("javaVersion").get()
3839
group = "io.flutter"
3940

41+
var jvmVersion = JvmTarget.JVM_17
42+
if (javaVersion == "21") {
43+
jvmVersion = JvmTarget.JVM_21
44+
}
4045
kotlin {
4146
compilerOptions {
4247
apiVersion.set(KotlinVersion.KOTLIN_1_9)
43-
jvmTarget = JvmTarget.JVM_17
48+
jvmTarget = jvmVersion
4449
}
4550
}
46-
val javaCompatibilityVersion = JavaVersion.VERSION_17
51+
52+
var javaCompatibilityVersion = JavaVersion.VERSION_17
53+
if (javaVersion == "21") {
54+
javaCompatibilityVersion = JavaVersion.VERSION_21
55+
}
4756
java {
4857
sourceCompatibility = javaCompatibilityVersion
4958
targetCompatibility = javaCompatibilityVersion
5059
}
5160

61+
5262
dependencies {
5363
intellijPlatform {
54-
// Documentation on the create(...) methods:
55-
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#custom-target-platforms
64+
// Documentation on the default target platform methods:
65+
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#default-target-platforms
5666
if (ideaProduct == "android-studio") {
57-
create(IntelliJPlatformType.AndroidStudio, ideaVersion)
67+
androidStudio(ideaVersion)
5868
} else { // if (ideaProduct == "IC") {
59-
create(IntelliJPlatformType.IntellijIdeaCommunity, ideaVersion)
69+
intellijIdeaCommunity(ideaVersion)
6070
}
6171
testFramework(TestFrameworkType.Platform)
6272

63-
// Plugin dependnecy documentation:
73+
// Plugin dependency documentation:
6474
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#plugins
6575
val bundledPluginList = mutableListOf(
6676
"com.intellij.java",
@@ -69,9 +79,11 @@ dependencies {
6979
"Git4Idea",
7080
"org.jetbrains.kotlin",
7181
"org.jetbrains.plugins.gradle",
72-
"org.intellij.intelliLang",
73-
"com.google.tools.ij.aiplugin",
74-
)
82+
"org.intellij.intelliLang")
83+
// TODO(mossman) - this check should be removed when 2025.1 supports the Gemini Code Assist plugin (https://github.com/flutter/flutter-intellij/issues/7965)
84+
if (ideaVersion.startsWith("225.")) {
85+
bundledPluginList.add("com.google.tools.ij.aiplugin")
86+
}
7587
if (ideaProduct == "android-studio") {
7688
bundledPluginList.add("org.jetbrains.android")
7789
bundledPluginList.add("com.android.tools.idea.smali")

flutter-studio/build.gradle.kts

+23-6
Original file line numberDiff line numberDiff line change
@@ -36,28 +36,42 @@ val dartPluginVersion = providers.gradleProperty("dartPluginVersion").get()
3636
val androidPluginVersion = providers.gradleProperty("androidPluginVersion").get()
3737
val sinceBuildInput = providers.gradleProperty("sinceBuild").get()
3838
val untilBuildInput = providers.gradleProperty("untilBuild").get()
39+
val javaVersion = providers.gradleProperty("javaVersion").get()
3940
group = "io.flutter"
4041

42+
var jvmVersion = JvmTarget.JVM_17
43+
if (javaVersion == "21") {
44+
jvmVersion = JvmTarget.JVM_21
45+
}
4146
kotlin {
4247
compilerOptions {
4348
apiVersion.set(KotlinVersion.KOTLIN_1_9)
44-
jvmTarget = JvmTarget.JVM_17
49+
jvmTarget = jvmVersion
4550
}
4651
}
47-
val javaCompatibilityVersion = JavaVersion.VERSION_17
52+
53+
var javaCompatibilityVersion = JavaVersion.VERSION_17
54+
if (javaVersion == "21") {
55+
javaCompatibilityVersion = JavaVersion.VERSION_21
56+
}
4857
java {
4958
sourceCompatibility = javaCompatibilityVersion
5059
targetCompatibility = javaCompatibilityVersion
5160
}
5261

5362
dependencies {
5463
intellijPlatform {
64+
// Documentation on the default target platform methods:
65+
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#default-target-platforms
5566
if (ideaProduct == "android-studio") {
56-
create(IntelliJPlatformType.AndroidStudio, ideaVersion)
67+
androidStudio(ideaVersion)
5768
} else { // if (ideaProduct == "IC") {
58-
create(IntelliJPlatformType.IntellijIdeaCommunity, ideaVersion)
69+
intellijIdeaCommunity(ideaVersion)
5970
}
6071
testFramework(TestFrameworkType.Platform)
72+
73+
// Plugin dependency documentation:
74+
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#plugins
6175
val bundledPluginList = mutableListOf(
6276
"com.intellij.java",
6377
"com.intellij.properties",
@@ -66,8 +80,11 @@ dependencies {
6680
"org.jetbrains.kotlin",
6781
"org.jetbrains.plugins.gradle",
6882
"org.intellij.intelliLang",
69-
"com.google.tools.ij.aiplugin",
70-
)
83+
"org.intellij.intelliLang")
84+
// TODO(mossman) - this check should be removed when 2025.1 supports the Gemini Code Assist plugin (https://github.com/flutter/flutter-intellij/issues/7965)
85+
if (ideaVersion.startsWith("225.")) {
86+
bundledPluginList.add("com.google.tools.ij.aiplugin")
87+
}
7188
if (ideaProduct == "android-studio") {
7289
bundledPluginList.add("org.jetbrains.android")
7390
bundledPluginList.add("com.android.tools.idea.smali")

product-matrix.json

+23-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
"androidPluginVersion": "",
1414
"sinceBuild": "241",
1515
"untilBuild": "241.*",
16-
"isUnitTestTarget": "false"
16+
"isUnitTestTarget": "false",
17+
"javaVersion": "17"
1718
},
1819
{
1920
"channel": "stable",
@@ -28,7 +29,8 @@
2829
"androidPluginVersion": "",
2930
"sinceBuild": "242",
3031
"untilBuild": "242.*",
31-
"isUnitTestTarget": "false"
32+
"isUnitTestTarget": "false",
33+
"javaVersion": "17"
3234
},
3335
{
3436
"channel": "stable",
@@ -39,11 +41,28 @@
3941
"ideaProduct": "android-studio",
4042
"ideaVersion": "2024.3.1.10",
4143
"baseVersion": "243.22562.59",
42-
"dartPluginVersion": " 243.21565.120",
44+
"dartPluginVersion": "243.21565.120",
4345
"androidPluginVersion": "",
4446
"sinceBuild": "243",
4547
"untilBuild": "253.*",
46-
"isUnitTestTarget": "true"
48+
"isUnitTestTarget": "true",
49+
"javaVersion": "17"
50+
},
51+
{
52+
"channel": "stable",
53+
"comments": "IntelliJ 2025.1 Beta, Android Studio Meerkat 2024.3 EAP",
54+
"name": "2025.1",
55+
"version": "2025.1",
56+
"ijVersion": "2025.1",
57+
"ideaProduct": "IC",
58+
"ideaVersion": "251.23774.16",
59+
"baseVersion": "251.23774.16",
60+
"dartPluginVersion": "251.23774.16",
61+
"androidPluginVersion": "251.23774.16",
62+
"sinceBuild": "243",
63+
"untilBuild": "253.*",
64+
"isUnitTestTarget": "true",
65+
"javaVersion": "21"
4766
}
4867
]
4968
}

tool/github.bat

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ call dart pub get --no-precompile
2121
cd ..\..
2222

2323
echo "run tests"
24-
set JAVA_HOME=%JAVA_HOME_11_X64%
24+
set JAVA_HOME=%JAVA_HOME_21_X64%
2525
echo "JAVA_HOME=%JAVA_HOME%"
2626
dart tool\plugin\bin\main.dart test
2727

tool/github.sh

+16-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,18 @@
77
# Fast fail the script on failures.
88
set -e
99

10-
export JAVA_HOME=$JAVA_HOME_17_X64
10+
# Log Java information that can be used whenever Java needs to be updated
11+
echo "ls /usr/lib/jvm"
12+
ls /usr/lib/jvm
13+
echo "System Java version:"
14+
java --version
15+
echo "export JAVA_HOME=/usr/lib/jvm/temurin-21-jdk-amd64"
16+
export JAVA_HOME=/usr/lib/jvm/temurin-21-jdk-amd64
17+
echo "ls $JAVA_HOME"
18+
ls $JAVA_HOME
19+
# Path is not used by the build, only by java --version
20+
echo "export PATH=$JAVA_HOME/bin:\$PATH"
21+
export PATH=$JAVA_HOME/bin:$PATH
1122

1223
# Clone and configure Flutter to the latest stable release
1324
git clone --depth 1 https://github.com/flutter/flutter.git ../flutter
@@ -16,6 +27,8 @@ flutter config --no-analytics
1627
flutter doctor
1728
export FLUTTER_SDK=`pwd`/../flutter
1829

30+
echo "IDEA_VERSION=$IDEA_VERSION"
31+
# TODO(mossmana): https://github.com/flutter/flutter-intellij/issues/7967
1932
if [ "$IDEA_VERSION" = "4.0" -o "$IDEA_VERSION" = "4.1" ] ; then
2033

2134
# Install Java 8 if running on 4.0 or 4.1.
@@ -26,7 +39,8 @@ if [ "$IDEA_VERSION" = "4.0" -o "$IDEA_VERSION" = "4.1" ] ; then
2639

2740
fi
2841

29-
java -version
42+
echo "java --version"
43+
java --version
3044

3145
# Get packages for the top-level grind script utilities.
3246
echo "pub get `pwd`"

tool/kokoro/setup.sh

+19-6
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,28 @@ setup() {
99
# that no confidential information is displayed.
1010
# set -x
1111

12+
# Set to 0 to use the system java, 1 to download/install a different version of java
13+
export USE_CUSTOM_JAVA=0
14+
15+
echo "System Java version:"
16+
java --version
17+
# JAVA_HOME_OLD is used by runner.dart
1218
export JAVA_HOME_OLD=$JAVA_HOME
13-
curl https://download.oracle.com/java/17/archive/jdk-17.0.4.1_macos-x64_bin.tar.gz > ../java.tar.gz
14-
(cd ..; tar fx java.tar.gz)
19+
echo "export JAVA_HOME_OLD=$JAVA_HOME"
20+
21+
if [ "$USE_CUSTOM_JAVA" = 1 ] ; then
22+
echo "curl https://download.oracle.com/java/17/archive/jdk-17.0.4.1_macos-x64_bin.tar.gz > ../java.tar.gz"
23+
curl https://download.oracle.com/java/17/archive/jdk-17.0.4.1_macos-x64_bin.tar.gz > ../java.tar.gz
24+
(cd ..; tar fx java.tar.gz)
25+
echo "Custom java version:"
26+
java --version
27+
28+
export JAVA_HOME=`pwd`/../jdk-17.0.4.1.jdk/Contents/Home
29+
echo "JAVA_HOME=$JAVA_HOME"
30+
export PATH=$PATH:$JAVA_HOME/bin
31+
fi
1532

16-
export JAVA_HOME=`pwd`/../jdk-17.0.4.1.jdk/Contents/Home
17-
export PATH=$PATH:$JAVA_HOME/bin
1833
export JAVA_OPTS=" -Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Addresses=true"
19-
echo "JAVA_HOME=$JAVA_HOME"
20-
java -version
2134

2235
# Clone and configure Flutter to the latest stable release
2336
git clone --depth 1 https://github.com/flutter/flutter.git ../flutter

tool/plugin/lib/build_spec.dart

+4-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class BuildSpec {
2323
final String ideaVersion;
2424
final String androidPluginVersion;
2525
final String dartPluginVersion;
26+
final String javaVersion;
2627

2728
// TODO (jwren) can baseVersion be removed?
2829
final String baseVersion;
@@ -50,7 +51,8 @@ class BuildSpec {
5051
untilBuild = json['untilBuild'] as String,
5152
filesToSkip = json['filesToSkip'] as List<String>? ?? [],
5253
isUnitTestTarget = json['isUnitTestTarget'] == 'true',
53-
isTestTarget = json['isTestTarget'] == 'true';
54+
isTestTarget = json['isTestTarget'] == 'true',
55+
javaVersion = json['javaVersion'] as String;
5456

5557
bool get copyIjVersion => isAndroidStudio && ijVersion != null;
5658

@@ -106,6 +108,7 @@ class BuildSpec {
106108
'ideaVersion: $ideaVersion, '
107109
'baseVersion: $baseVersion, '
108110
'dartPluginVersion: $dartPluginVersion, '
111+
'javaVersion: $javaVersion, '
109112
'since: $sinceBuild, '
110113
'until: $untilBuild, '
111114
'version: "$release")';

tool/plugin/lib/runner.dart

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ androidPluginVersion=${spec.androidPluginVersion}
7373
sinceBuild=${spec.sinceBuild}
7474
untilBuild=${spec.untilBuild}
7575
testing=$testing
76+
javaVersion=${spec.javaVersion}
7677
kotlin.stdlib.default.dependency=false
7778
org.gradle.parallel=true
7879
org.gradle.jvmargs=-Xms1024m -Xmx4048m

0 commit comments

Comments
 (0)