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 } } @@ -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 - +