diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 0b03b46..f6ac227 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -8,11 +8,11 @@ jobs:
fail-fast: false
matrix:
version:
- - { jdk: 17, idea: 2024.1 }
- { jdk: 21, idea: 2024.2 }
- { jdk: 21, idea: 2024.3 }
- { jdk: 21, idea: 2025.1 }
- { jdk: 21, idea: 2025.2 }
+ - { jdk: 21, idea: 2025.3 }
- { jdk: 21, idea: LATEST-EAP-SNAPSHOT }
name: 'IDEA ${{ matrix.version.idea }}'
env:
diff --git a/build.gradle b/build.gradle
index 53c904c..d21b9d8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,13 +3,13 @@ import com.hierynomus.gradle.license.tasks.LicenseFormat
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
plugins {
- id "org.jetbrains.intellij.platform" version "2.6.0"
- id "com.github.hierynomus.license" version "0.16.1"
+ id("org.jetbrains.intellij.platform") version "2.10.5"
+ id("com.github.hierynomus.license") version "0.16.1"
}
-group pluginGroup
-version pluginVersion
+group = pluginGroup
+version = pluginVersion
apply plugin: 'idea'
apply plugin: 'java'
@@ -19,8 +19,8 @@ apply plugin: 'checkstyle'
apply plugin: 'jacoco'
java {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
+ sourceCompatibility = JavaLanguageVersion.of(21)
+ targetCompatibility = JavaLanguageVersion.of(21)
}
repositories {
@@ -36,7 +36,7 @@ intellijPlatform {
projectName = 'MapStruct-Intellij-Plugin'
pluginConfiguration {
ideaVersion {
- sinceBuild = "241"
+ sinceBuild = "242"
untilBuild = provider { null } as Provider extends String>
}
}
@@ -50,17 +50,17 @@ patchPluginXml {
pluginDescription = htmlFixer('description.html')
}
-task licenseTestData(type: LicenseCheck) {
+tasks.register('licenseTestData', LicenseCheck) {
source = fileTree(dir: "testData").include("**/*")
}
-task licenseFormatForKotlin(type: LicenseFormat) {
+tasks.register('licenseFormatForKotlin', LicenseFormat) {
source = fileTree(dir: "src/main").include("**/*.kt").include("**/*.xml")
}
license {
- header rootProject.file('etc/license.txt')
- strictCheck true
+ header = file('etc/license.txt')
+ strictCheck = true
mapping {
java = 'SLASHSTAR_STYLE' // IntelliJ reports the JAVADOC_STYLE as a dangling comment
}
@@ -75,15 +75,16 @@ licenseFormat.dependsOn licenseFormatForKotlin
licenseTest.dependsOn licenseTestData
checkstyle {
- toolVersion '8.36.1'
- config resources.text.fromUri("https://raw.githubusercontent.com/mapstruct/mapstruct/master/build-config/src/main/resources/build-config/checkstyle.xml")
+ toolVersion = '8.36.1'
+ config = resources.text.fromUri("https://raw.githubusercontent.com/mapstruct/mapstruct/master/build-config/src/main/resources/build-config/checkstyle.xml")
configProperties = [
- 'checkstyle.cache.file': rootProject.layout.buildDirectory.get().asFile.toPath( ).resolve( 'checkstyle-cachefile').toString(),
+ 'checkstyle.cache.file': layout.buildDirectory.get().asFile.toPath( ).resolve( 'checkstyle-cachefile').toString(),
'basedir': 'https://raw.githubusercontent.com/mapstruct/mapstruct/master/build-config',
]
}
jacocoTestReport {
+ classDirectories.setFrom(instrumentCode)
reports {
xml.required = true
html.required = true
@@ -91,12 +92,18 @@ jacocoTestReport {
}
def versionToUse = System.getenv().getOrDefault( 'IDEA_VERSION', ideaVersion )
-def useInstaller = !versionToUse.containsIgnoreCase( "EAP" )
+def useIdeaInstaller = !versionToUse.containsIgnoreCase( "EAP" )
dependencies {
intellijPlatform {
- ideaType == 'IC' ? intellijIdeaCommunity(versionToUse, useInstaller) : intellijIdeaUltimate(versionToUse, useInstaller)
-
- jetbrainsRuntime()
+ // When versionToUse is 2025.3 or later then there is only a single distribution of IntelliJ
+ // This comparison can be removed if the oldest supported version of idea is 2025.3 (253) or later
+ if (('2025.3' <=> versionToUse) <= 0 ){
+ intellijIdea(versionToUse) {
+ useInstaller = useIdeaInstaller
+ }
+ } else {
+ ideaType == 'IC' ? intellijIdeaCommunity(versionToUse, useIdeaInstaller) : intellijIdeaUltimate(versionToUse, useIdeaInstaller)
+ }
bundledPlugin( 'com.intellij.java' )
bundledPlugin( 'org.jetbrains.kotlin' )
@@ -116,20 +123,20 @@ dependencies {
testRuntimeOnly('org.immutables:value:2.10.1')
}
-task libs(type: Sync) {
- from configurations.runtimeClasspath
- into layout.buildDirectory.dir("libs")
+tasks.register('libs', Sync) {
+ from(configurations.runtimeClasspath)
+ into(layout.buildDirectory.dir("libs"))
preserve {
- include 'mapstruct-intellij-*.jar'
- include 'MapStruct-Intellij-*.jar'
+ include('mapstruct-intellij-*.jar')
+ include('MapStruct-Intellij-*.jar')
}
- rename 'mapstruct-1.5.3.Final.jar', 'mapstruct.jar'
+ rename('mapstruct-1.5.3.Final.jar', 'mapstruct.jar')
}
-task testLibs(type: Sync) {
- from configurations.testRuntimeClasspath
- into "$buildDir/test-libs"
- rename 'value-2.10.1.jar', 'immutables.jar'
+tasks.register('testLibs', Sync) {
+ from(configurations.testRuntimeClasspath)
+ into(layout.buildDirectory.dir("test-libs"))
+ rename('value-2.10.1.jar', 'immutables.jar')
}
test.dependsOn( libs, testLibs )
diff --git a/gradle.properties b/gradle.properties
index 27d6dea..916452e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,10 +2,11 @@
# https://www.jetbrains.com/intellij-repository/releases
# https://www.jetbrains.com/intellij-repository/snapshots
-ideaVersion = 2024.1
+ideaVersion = 2024.2
ideaType = IC
sources = true
runGenerators = true
+org.gradle.jvmargs=-Xmx1024m
pluginGroup = org.mapstruct
pluginName = mapstruct-intellij
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 249e583..a4b76b9 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index d642e7f..d4081da 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index a69d9cb..f5feea6 100755
--- a/gradlew
+++ b/gradlew
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,13 +82,12 @@ do
esac
done
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -133,22 +134,29 @@ location of your Java installation."
fi
else
JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -193,11 +201,15 @@ if "$cygwin" || "$msys" ; then
done
fi
-# Collect all arguments for the java command;
-# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-# shell script including quotes and variable substitutions, so put them in
-# double quotes to make sure that they get re-expanded; and
-# * put everything else in single quotes, so that it's not re-expanded.
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
diff --git a/gradlew.bat b/gradlew.bat
index f127cfd..9d21a21 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@@ -26,6 +28,7 @@ if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -42,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
goto fail
@@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
goto fail
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index 7938585..b1f2a73 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -24,7 +24,7 @@
MapStruct
-
+