Skip to content

Commit 1beaba3

Browse files
authored
Add IntelliJ Platform 2025.3 build (#250)
In 2025.3 IntelliJ IDEA Community and Ultimate are combined into one product. See https://blog.jetbrains.com/platform/2025/11/intellij-platform-2025-3-what-plugin-developers-should-know/ Along with this change the build system was updated. See https://blog.jetbrains.com/platform/2025/11/intellij-platform-2025-3-what-plugin-developers-should-know/#requirements Upgrade `org.jetbrains.intellij.platform ` plugin to 2.10.5. This leads to need more ram on GitHub Actions, so it has been increased to 1024 MB Upgrade Gradle to 8.14.3: - The space assignment syntax is now deprecated - The JVM is now configured different - Calling `Task.getProject()` is now deprecated - `task` should be replaced with `tasks.register` Update minimal supported version to 2024.2 (224) and increased the JVM Version to 21.
1 parent b078ff2 commit 1beaba3

File tree

8 files changed

+80
-55
lines changed

8 files changed

+80
-55
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ jobs:
88
fail-fast: false
99
matrix:
1010
version:
11-
- { jdk: 17, idea: 2024.1 }
1211
- { jdk: 21, idea: 2024.2 }
1312
- { jdk: 21, idea: 2024.3 }
1413
- { jdk: 21, idea: 2025.1 }
1514
- { jdk: 21, idea: 2025.2 }
15+
- { jdk: 21, idea: 2025.3 }
1616
- { jdk: 21, idea: LATEST-EAP-SNAPSHOT }
1717
name: 'IDEA ${{ matrix.version.idea }}'
1818
env:

build.gradle

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import com.hierynomus.gradle.license.tasks.LicenseFormat
33
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
44

55
plugins {
6-
id "org.jetbrains.intellij.platform" version "2.6.0"
7-
id "com.github.hierynomus.license" version "0.16.1"
6+
id("org.jetbrains.intellij.platform") version "2.10.5"
7+
id("com.github.hierynomus.license") version "0.16.1"
88
}
99

1010

11-
group pluginGroup
12-
version pluginVersion
11+
group = pluginGroup
12+
version = pluginVersion
1313

1414
apply plugin: 'idea'
1515
apply plugin: 'java'
@@ -19,8 +19,8 @@ apply plugin: 'checkstyle'
1919
apply plugin: 'jacoco'
2020

2121
java {
22-
sourceCompatibility = JavaVersion.VERSION_17
23-
targetCompatibility = JavaVersion.VERSION_17
22+
sourceCompatibility = JavaLanguageVersion.of(21)
23+
targetCompatibility = JavaLanguageVersion.of(21)
2424
}
2525

2626
repositories {
@@ -36,7 +36,7 @@ intellijPlatform {
3636
projectName = 'MapStruct-Intellij-Plugin'
3737
pluginConfiguration {
3838
ideaVersion {
39-
sinceBuild = "241"
39+
sinceBuild = "242"
4040
untilBuild = provider { null } as Provider<? extends String>
4141
}
4242
}
@@ -50,17 +50,17 @@ patchPluginXml {
5050
pluginDescription = htmlFixer('description.html')
5151
}
5252

53-
task licenseTestData(type: LicenseCheck) {
53+
tasks.register('licenseTestData', LicenseCheck) {
5454
source = fileTree(dir: "testData").include("**/*")
5555
}
5656

57-
task licenseFormatForKotlin(type: LicenseFormat) {
57+
tasks.register('licenseFormatForKotlin', LicenseFormat) {
5858
source = fileTree(dir: "src/main").include("**/*.kt").include("**/*.xml")
5959
}
6060

6161
license {
62-
header rootProject.file('etc/license.txt')
63-
strictCheck true
62+
header = file('etc/license.txt')
63+
strictCheck = true
6464
mapping {
6565
java = 'SLASHSTAR_STYLE' // IntelliJ reports the JAVADOC_STYLE as a dangling comment
6666
}
@@ -75,28 +75,35 @@ licenseFormat.dependsOn licenseFormatForKotlin
7575
licenseTest.dependsOn licenseTestData
7676

7777
checkstyle {
78-
toolVersion '8.36.1'
79-
config resources.text.fromUri("https://raw.githubusercontent.com/mapstruct/mapstruct/master/build-config/src/main/resources/build-config/checkstyle.xml")
78+
toolVersion = '8.36.1'
79+
config = resources.text.fromUri("https://raw.githubusercontent.com/mapstruct/mapstruct/master/build-config/src/main/resources/build-config/checkstyle.xml")
8080
configProperties = [
81-
'checkstyle.cache.file': rootProject.layout.buildDirectory.get().asFile.toPath( ).resolve( 'checkstyle-cachefile').toString(),
81+
'checkstyle.cache.file': layout.buildDirectory.get().asFile.toPath( ).resolve( 'checkstyle-cachefile').toString(),
8282
'basedir': 'https://raw.githubusercontent.com/mapstruct/mapstruct/master/build-config',
8383
]
8484
}
8585

8686
jacocoTestReport {
87+
classDirectories.setFrom(instrumentCode)
8788
reports {
8889
xml.required = true
8990
html.required = true
9091
}
9192
}
9293

9394
def versionToUse = System.getenv().getOrDefault( 'IDEA_VERSION', ideaVersion )
94-
def useInstaller = !versionToUse.containsIgnoreCase( "EAP" )
95+
def useIdeaInstaller = !versionToUse.containsIgnoreCase( "EAP" )
9596
dependencies {
9697
intellijPlatform {
97-
ideaType == 'IC' ? intellijIdeaCommunity(versionToUse, useInstaller) : intellijIdeaUltimate(versionToUse, useInstaller)
98-
99-
jetbrainsRuntime()
98+
// When versionToUse is 2025.3 or later then there is only a single distribution of IntelliJ
99+
// This comparison can be removed if the oldest supported version of idea is 2025.3 (253) or later
100+
if (('2025.3' <=> versionToUse) <= 0 ){
101+
intellijIdea(versionToUse) {
102+
useInstaller = useIdeaInstaller
103+
}
104+
} else {
105+
ideaType == 'IC' ? intellijIdeaCommunity(versionToUse, useIdeaInstaller) : intellijIdeaUltimate(versionToUse, useIdeaInstaller)
106+
}
100107

101108
bundledPlugin( 'com.intellij.java' )
102109
bundledPlugin( 'org.jetbrains.kotlin' )
@@ -116,20 +123,20 @@ dependencies {
116123
testRuntimeOnly('org.immutables:value:2.10.1')
117124
}
118125

119-
task libs(type: Sync) {
120-
from configurations.runtimeClasspath
121-
into layout.buildDirectory.dir("libs")
126+
tasks.register('libs', Sync) {
127+
from(configurations.runtimeClasspath)
128+
into(layout.buildDirectory.dir("libs"))
122129
preserve {
123-
include 'mapstruct-intellij-*.jar'
124-
include 'MapStruct-Intellij-*.jar'
130+
include('mapstruct-intellij-*.jar')
131+
include('MapStruct-Intellij-*.jar')
125132
}
126-
rename 'mapstruct-1.5.3.Final.jar', 'mapstruct.jar'
133+
rename('mapstruct-1.5.3.Final.jar', 'mapstruct.jar')
127134
}
128135

129-
task testLibs(type: Sync) {
130-
from configurations.testRuntimeClasspath
131-
into "$buildDir/test-libs"
132-
rename 'value-2.10.1.jar', 'immutables.jar'
136+
tasks.register('testLibs', Sync) {
137+
from(configurations.testRuntimeClasspath)
138+
into(layout.buildDirectory.dir("test-libs"))
139+
rename('value-2.10.1.jar', 'immutables.jar')
133140
}
134141

135142
test.dependsOn( libs, testLibs )

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
# https://www.jetbrains.com/intellij-repository/releases
33
# https://www.jetbrains.com/intellij-repository/snapshots
44

5-
ideaVersion = 2024.1
5+
ideaVersion = 2024.2
66
ideaType = IC
77
sources = true
88
runGenerators = true
9+
org.gradle.jvmargs=-Xmx1024m
910

1011
pluginGroup = org.mapstruct
1112
pluginName = mapstruct-intellij

gradle/wrapper/gradle-wrapper.jar

-16.8 KB
Binary file not shown.
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
4+
networkTimeout=10000
5+
validateDistributionUrl=true
46
zipStoreBase=GRADLE_USER_HOME
57
zipStorePath=wrapper/dists

gradlew

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
# See the License for the specific language governing permissions and
1616
# limitations under the License.
1717
#
18+
# SPDX-License-Identifier: Apache-2.0
19+
#
1820

1921
##############################################################################
2022
#
@@ -55,7 +57,7 @@
5557
# Darwin, MinGW, and NonStop.
5658
#
5759
# (3) This script is generated from the Groovy template
58-
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
60+
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
5961
# within the Gradle project.
6062
#
6163
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,13 +82,12 @@ do
8082
esac
8183
done
8284

83-
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
84-
85-
APP_NAME="Gradle"
85+
# This is normally unused
86+
# shellcheck disable=SC2034
8687
APP_BASE_NAME=${0##*/}
87-
88-
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89-
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
88+
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
89+
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
90+
' "$PWD" ) || exit
9091

9192
# Use the maximum available, or set MAX_FD != -1 to use that value.
9293
MAX_FD=maximum
@@ -133,22 +134,29 @@ location of your Java installation."
133134
fi
134135
else
135136
JAVACMD=java
136-
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137+
if ! command -v java >/dev/null 2>&1
138+
then
139+
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137140
138141
Please set the JAVA_HOME variable in your environment to match the
139142
location of your Java installation."
143+
fi
140144
fi
141145

142146
# Increase the maximum file descriptors if we can.
143147
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
144148
case $MAX_FD in #(
145149
max*)
150+
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
151+
# shellcheck disable=SC2039,SC3045
146152
MAX_FD=$( ulimit -H -n ) ||
147153
warn "Could not query maximum file descriptor limit"
148154
esac
149155
case $MAX_FD in #(
150156
'' | soft) :;; #(
151157
*)
158+
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
159+
# shellcheck disable=SC2039,SC3045
152160
ulimit -n "$MAX_FD" ||
153161
warn "Could not set maximum file descriptor limit to $MAX_FD"
154162
esac
@@ -193,11 +201,15 @@ if "$cygwin" || "$msys" ; then
193201
done
194202
fi
195203

196-
# Collect all arguments for the java command;
197-
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
198-
# shell script including quotes and variable substitutions, so put them in
199-
# double quotes to make sure that they get re-expanded; and
200-
# * put everything else in single quotes, so that it's not re-expanded.
204+
205+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
206+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
207+
208+
# Collect all arguments for the java command:
209+
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
210+
# and any embedded shellness will be escaped.
211+
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
212+
# treated as '${Hostname}' itself on the command line.
201213

202214
set -- \
203215
"-Dorg.gradle.appname=$APP_BASE_NAME" \

gradlew.bat

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
@rem See the License for the specific language governing permissions and
1414
@rem limitations under the License.
1515
@rem
16+
@rem SPDX-License-Identifier: Apache-2.0
17+
@rem
1618

1719
@if "%DEBUG%"=="" @echo off
1820
@rem ##########################################################################
@@ -26,6 +28,7 @@ if "%OS%"=="Windows_NT" setlocal
2628

2729
set DIRNAME=%~dp0
2830
if "%DIRNAME%"=="" set DIRNAME=.
31+
@rem This is normally unused
2932
set APP_BASE_NAME=%~n0
3033
set APP_HOME=%DIRNAME%
3134

@@ -42,11 +45,11 @@ set JAVA_EXE=java.exe
4245
%JAVA_EXE% -version >NUL 2>&1
4346
if %ERRORLEVEL% equ 0 goto execute
4447

45-
echo.
46-
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47-
echo.
48-
echo Please set the JAVA_HOME variable in your environment to match the
49-
echo location of your Java installation.
48+
echo. 1>&2
49+
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
50+
echo. 1>&2
51+
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
52+
echo location of your Java installation. 1>&2
5053

5154
goto fail
5255

@@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
5659

5760
if exist "%JAVA_EXE%" goto execute
5861

59-
echo.
60-
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61-
echo.
62-
echo Please set the JAVA_HOME variable in your environment to match the
63-
echo location of your Java installation.
62+
echo. 1>&2
63+
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
64+
echo. 1>&2
65+
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
66+
echo location of your Java installation. 1>&2
6467

6568
goto fail
6669

src/main/resources/META-INF/plugin.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<vendor url="https://www.mapstruct.org">MapStruct</vendor>
2525

2626
<!-- please see https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
27-
<idea-version since-build="241"/>
27+
<idea-version since-build="242"/>
2828

2929
<!-- please see https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
3030
on how to target different products -->

0 commit comments

Comments
 (0)