From cf19052a80011f9e2c383e439daf1bf9e7bd08b2 Mon Sep 17 00:00:00 2001 From: Filip Hrisafov Date: Thu, 12 Nov 2026 16:18:02 +0100 Subject: [PATCH 1/5] Support IntelliJ IDEA 2026.2 and 2026.3 and drop 2025.x - The minimum supported version is now 2026.1 (since-build 261) - Test against IDEA 2026.1, 2026.2 and 2026.3, 2026.2 and later require JDK 25 --- .github/workflows/main.yml | 7 +++---- build.gradle | 2 +- gradle.properties | 2 +- src/main/resources/META-INF/plugin.xml | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 74470cc4..ecec3c76 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,10 +8,9 @@ jobs: fail-fast: false matrix: version: - - { jdk: 21, idea: 2025.1 } - - { jdk: 21, idea: 2025.2 } - - { jdk: 21, idea: 2025.3 } - { jdk: 21, idea: 2026.1 } + - { jdk: 25, idea: 2026.2 } + - { jdk: 25, idea: 2026.3 } - { jdk: 25, idea: LATEST-EAP-SNAPSHOT } name: 'IDEA ${{ matrix.version.idea }}' env: @@ -32,7 +31,7 @@ jobs: - name: 'Generate coverage report' run: ./gradlew --warning-mode=all jacocoTestReport - name: 'Upload coverage to Codecov' - if: github.repository == 'mapstruct/mapstruct-idea' && matrix.version.idea == '2025.1' + if: github.repository == 'mapstruct/mapstruct-idea' && matrix.version.idea == '2026.1' uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: fail_ci_if_error: true diff --git a/build.gradle b/build.gradle index 2bf82c79..9ebbe6ec 100644 --- a/build.gradle +++ b/build.gradle @@ -40,7 +40,7 @@ intellijPlatform { projectName = 'MapStruct-Intellij-Plugin' pluginConfiguration { ideaVersion { - sinceBuild = "251" + sinceBuild = "261" untilBuild = provider { null } as Provider } } diff --git a/gradle.properties b/gradle.properties index 699da4f8..f86197fa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ # https://www.jetbrains.com/intellij-repository/releases # https://www.jetbrains.com/intellij-repository/snapshots -ideaVersion = 2025.1 +ideaVersion = 2026.1 sources = true runGenerators = true org.gradle.jvmargs=-Xmx1024m diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index a368fcbb..9e26201c 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -24,7 +24,7 @@ MapStruct - + From 322b1c006f55a09bdbbfc76e478b75da5feb5677 Mon Sep 17 00:00:00 2001 From: Filip Hrisafov Date: Thu, 12 Nov 2026 16:18:02 +0100 Subject: [PATCH 2/5] Update Gradle to 9.8.2 and pin the distribution checksum The wrapper verifies the downloaded Gradle distribution with distributionSha256Sum. --- gradle/wrapper/gradle-wrapper.jar | Bin 45633 -> 48749 bytes gradle/wrapper/gradle-wrapper.properties | 5 +- gradlew | 6 +- gradlew.bat | 85 ++++++++++++++--------- 4 files changed, 59 insertions(+), 37 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee3125fe0768e9a76ee977ac089eb657005e..9fa7f288283f81eec4952784c271abd7e0938dee 100644 GIT binary patch delta 40542 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%0A#yzphJ9K%`TS>CWJ`wnl|_* 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 Jz@B;d?LWW7ENB1# diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1a704683..5907d39c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,10 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip +distributionSha256Sum=21bd5da2de49b642904077f38c0efdc7778e92b3ed0889392dca61b97e389607 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.2-bin.zip networkTimeout=10000 +retries=0 +retryBackOffMs=500 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index adff685a..249efbb0 100755 --- a/gradlew +++ b/gradlew @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/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/. diff --git a/gradlew.bat b/gradlew.bat index c4bdd3ab..3185a43f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -19,12 +19,39 @@ @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +@rem Catch executions from older scripts and ensure they exit cleanly. +@rem This can be removed once we can be reasonably confident that few people +@rem will be migrating directly to this new wrapper. +goto afterSafetyNet +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +goto exitWithErrorLevel +:afterSafetyNet set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -45,13 +72,14 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -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 +1>&2 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. -goto fail +"%COMSPEC%" /c exit 1 +goto exitWithErrorLevel :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -59,35 +87,26 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -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 +1>&2 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. -goto fail +"%COMSPEC%" /c exit 1 +goto exitWithErrorLevel :execute @rem Setup the command line -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel & goto exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem This label must not be changed. We rely on old scripts being able to jump to this point. +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% From ca3931aac4d253f2e538b12b1c0029b68db1de25 Mon Sep 17 00:00:00 2001 From: Filip Hrisafov Date: Thu, 12 Nov 2026 16:18:02 +0100 Subject: [PATCH 3/5] Add release workflow publishing the plugin to the JetBrains Marketplace - Manually triggered workflow running in the release environment - The release and next development versions are deduced from pluginVersion when not set - The plugin is signed (CERTIFICATE_CHAIN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD secrets) and published with the JETBRAINS_MARKETPLACE_TOKEN secret - The signed plugin gets a build provenance attestation and is attached to the GitHub release - Similar to mapstruct core, the release notes are collected in NEXT_RELEASE_CHANGELOG.md, used for the GitHub release and reset for the next development version - Remove the unused publish* Gradle properties --- .github/workflows/release.yml | 131 ++++++++++++++++++++++++++++++++++ NEXT_RELEASE_CHANGELOG.md | 9 +++ build.gradle | 10 +++ gradle.properties | 4 -- 4 files changed, 150 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 NEXT_RELEASE_CHANGELOG.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..80ea040d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,131 @@ +name: Release +run-name: "Release ${{ inputs.version || 'from current snapshot version' }}" + +on: + workflow_dispatch: + inputs: + version: + description: 'Release version (e.g. 1.9.2). Defaults to pluginVersion in gradle.properties without -SNAPSHOT' + required: false + next: + description: 'Next development version without -SNAPSHOT (e.g. 1.9.3). Defaults to the release version with the patch incremented' + required: false + +permissions: + contents: read + +concurrency: + group: release + cancel-in-progress: false + +jobs: + release: + name: 'Release' + if: github.repository == 'mapstruct/mapstruct-idea' + runs-on: ubuntu-latest + environment: release + permissions: + contents: write + id-token: write + attestations: write + steps: + - name: 'Checkout' + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + ref: main + - name: 'Set up JDK' + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 + with: + distribution: 'zulu' + java-version: 21 + - name: Setup Gradle + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 + with: + cache-read-only: true + - name: 'Determine versions' + env: + RELEASE_VERSION: ${{ inputs.version }} + NEXT_BASE_VERSION: ${{ inputs.next }} + run: | + semver='^[0-9]+\.[0-9]+\.[0-9]+$' + if [ -z "$RELEASE_VERSION" ]; then + current=$(sed -n 's/^pluginVersion = //p' gradle.properties) + RELEASE_VERSION="${current%-SNAPSHOT}" + echo "Deduced release version $RELEASE_VERSION from pluginVersion $current" + fi + [[ "$RELEASE_VERSION" =~ $semver ]] || { echo "Invalid release version: $RELEASE_VERSION"; exit 1; } + if [ -z "$NEXT_BASE_VERSION" ]; then + IFS=. read -r major minor patch <<< "$RELEASE_VERSION" + NEXT_BASE_VERSION="$major.$minor.$((patch + 1))" + echo "Deduced next development version $NEXT_BASE_VERSION-SNAPSHOT" + fi + [[ "$NEXT_BASE_VERSION" =~ $semver ]] || { echo "Invalid next version: $NEXT_BASE_VERSION"; exit 1; } + if [ -n "$(git ls-remote --tags origin "refs/tags/$RELEASE_VERSION")" ]; then + echo "Tag $RELEASE_VERSION already exists" + exit 1 + fi + echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV" + echo "NEXT_BASE_VERSION=$NEXT_BASE_VERSION" >> "$GITHUB_ENV" + echo "### Releasing $RELEASE_VERSION (next: $NEXT_BASE_VERSION-SNAPSHOT)" >> "$GITHUB_STEP_SUMMARY" + - name: 'Prepare release notes' + run: | + # Drop the sections of NEXT_RELEASE_CHANGELOG.md that have no entries + awk ' + /^### / { heading = $0; next } + NF { + if (heading != "") { if (printed) print ""; print heading; print ""; heading = ""; printed = 1 } + print + } + ' NEXT_RELEASE_CHANGELOG.md > "$RUNNER_TEMP/release-notes.md" + if ! grep -q '^\* ' "$RUNNER_TEMP/release-notes.md"; then + echo "NEXT_RELEASE_CHANGELOG.md has no entries, add the release notes before releasing" + exit 1 + fi + cat "$RUNNER_TEMP/release-notes.md" >> "$GITHUB_STEP_SUMMARY" + - name: 'Configure git' + run: | + git config user.name 'github-actions[bot]' + git config user.email '41898282+github-actions[bot]@users.noreply.github.com' + - name: 'Set release version' + run: | + sed -i "s/^pluginVersion = .*/pluginVersion = $RELEASE_VERSION/" gradle.properties + git commit -am "Release $RELEASE_VERSION" + git tag -a "$RELEASE_VERSION" -m "$RELEASE_VERSION" + - name: 'Build' + # Tests run in CI, only build the plugin distribution here so no unverified dependencies run in this job + run: ./gradlew --warning-mode=all buildPlugin + - name: 'Sign plugin' + env: + CERTIFICATE_CHAIN: ${{ secrets.CERTIFICATE_CHAIN }} + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }} + run: | + if [ -z "$CERTIFICATE_CHAIN" ] || [ -z "$PRIVATE_KEY" ]; then + echo "CERTIFICATE_CHAIN and PRIVATE_KEY secrets are required to sign the plugin" + exit 1 + fi + ./gradlew --warning-mode=all signPlugin + ./gradlew --warning-mode=all verifyPluginSignature + echo "PLUGIN_ZIP=$(ls build/distributions/*-signed.zip)" >> "$GITHUB_ENV" + - name: 'Attest build provenance' + uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2 + with: + subject-path: ${{ env.PLUGIN_ZIP }} + - name: 'Publish to JetBrains Marketplace' + env: + JETBRAINS_MARKETPLACE_TOKEN: ${{ secrets.JETBRAINS_MARKETPLACE_TOKEN }} + CERTIFICATE_CHAIN: ${{ secrets.CERTIFICATE_CHAIN }} + PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }} + run: ./gradlew --warning-mode=all publishPlugin + - name: 'Set next development version' + run: | + sed -i "s/^pluginVersion = .*/pluginVersion = $NEXT_BASE_VERSION-SNAPSHOT/" gradle.properties + printf '### Features\n\n### Enhancements\n\n### Bugs\n\n### Documentation\n\n### Build\n' > NEXT_RELEASE_CHANGELOG.md + git commit -am "Prepare next development version" + - name: 'Push changes' + run: git push --atomic origin main "refs/tags/$RELEASE_VERSION" + - name: 'Create GitHub release' + env: + GH_TOKEN: ${{ github.token }} + run: gh release create "$RELEASE_VERSION" "$PLUGIN_ZIP" --title "$RELEASE_VERSION" --verify-tag --notes-file "$RUNNER_TEMP/release-notes.md" diff --git a/NEXT_RELEASE_CHANGELOG.md b/NEXT_RELEASE_CHANGELOG.md new file mode 100644 index 00000000..6352fc56 --- /dev/null +++ b/NEXT_RELEASE_CHANGELOG.md @@ -0,0 +1,9 @@ +### Features + +### Enhancements + +### Bugs + +### Documentation + +### Build diff --git a/build.gradle b/build.gradle index 9ebbe6ec..33e89255 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,14 @@ intellijPlatform { untilBuild = provider { null } as Provider } } + signing { + certificateChain = providers.environmentVariable('CERTIFICATE_CHAIN') + privateKey = providers.environmentVariable('PRIVATE_KEY') + password = providers.environmentVariable('PRIVATE_KEY_PASSWORD') + } + publishing { + token = providers.environmentVariable('JETBRAINS_MARKETPLACE_TOKEN') + } } // Simple function to load change-notes.html and description.html into valid text for plugin.xml @@ -105,6 +113,8 @@ dependencies { bundledPlugin( 'com.intellij.java' ) bundledPlugin( 'org.jetbrains.kotlin' ) + zipSigner( '0.1.45' ) + testFramework( TestFrameworkType.Platform.INSTANCE ) testFramework( TestFrameworkType.Plugin.Java.INSTANCE ) } diff --git a/gradle.properties b/gradle.properties index f86197fa..5cf659ab 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,3 @@ pluginGroup = org.mapstruct pluginName = mapstruct-intellij pluginVersion = 1.9.2-SNAPSHOT -publishPluginId = -publishUsername = -publishPassword = -publishChannel = From 6438fd47396a265cd9492b964bdbbc0ccec04132 Mon Sep 17 00:00:00 2001 From: Filip Hrisafov Date: Thu, 12 Nov 2026 16:18:02 +0100 Subject: [PATCH 4/5] Add Gradle dependency verification for the plugin distribution Verify the checksums of the Gradle plugins, of the dependencies packaged in the plugin distribution and of the Marketplace ZIP signer. These run when signing and publishing the plugin. The test, checkstyle and jacoco dependencies are not verified, they only run in CI and depend on the IDEA version that is being tested against. The release workflow only builds the plugin distribution without running the tests. The mavenLocal() repository is removed, nothing is resolved from it. --- build.gradle | 17 +- gradle/verification-metadata.xml | 1103 ++++++++++++++++++++++++++++++ 2 files changed, 1119 insertions(+), 1 deletion(-) create mode 100644 gradle/verification-metadata.xml diff --git a/build.gradle b/build.gradle index 33e89255..0c458913 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,6 @@ java { } repositories { - mavenLocal() mavenCentral() intellijPlatform { defaultRepositories() @@ -162,3 +161,19 @@ test { exceptionFormat = 'full' } } + +// Dependency verification (gradle/verification-metadata.xml) only covers what ends up in the plugin distribution +// and what runs while signing and publishing the plugin. +// The Gradle plugins are always verified. Everything else (tests, checkstyle, jacoco) only runs in CI, +// and depends on the IDEA version that is being tested against. +def verifiedConfigurations = [ + 'runtimeClasspath', + 'intellijPlatformRuntimeClasspath', + 'intellijPlatformSandboxRuntimeClasspath', + 'marketplaceZipSigner', +] +configurations.configureEach { + if (!verifiedConfigurations.contains(name)) { + resolutionStrategy.disableDependencyVerification() + } +} diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml new file mode 100644 index 00000000..3b7df2d3 --- /dev/null +++ b/gradle/verification-metadata.xml @@ -0,0 +1,1103 @@ + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 17f53144c8bae8d744b9dc814c018ba4f90d329d Mon Sep 17 00:00:00 2001 From: Filip Hrisafov Date: Thu, 12 Nov 2026 16:18:02 +0100 Subject: [PATCH 5/5] Add 1.10.0 release notes and bump version to 1.10.0-SNAPSHOT --- NEXT_RELEASE_CHANGELOG.md | 17 +++++++++++++++++ change-notes.html | 9 +++++++++ gradle.properties | 3 +-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/NEXT_RELEASE_CHANGELOG.md b/NEXT_RELEASE_CHANGELOG.md index 6352fc56..350eb283 100644 --- a/NEXT_RELEASE_CHANGELOG.md +++ b/NEXT_RELEASE_CHANGELOG.md @@ -2,8 +2,25 @@ ### Enhancements +* Support generics in `@Mapping` source and target references (#83) +* Do not report unknown source properties when a `Map` is used as the source parameter (#243) + ### Bugs +* Completion in `java(...)` expressions does not work for record targets (#245) +* Kotlin references fail with `NoClassDefFoundError` in IntelliJ IDEA 2026.3 (#281) +* `componentModel` completion shows unrelated suggestions (#275) + ### Documentation ### Build + +* Release the plugin through a GitHub Actions workflow +* Sign the plugin and attest the build provenance of the released plugin +* Verify the dependencies of the plugin distribution and the Gradle plugins +* Test against IntelliJ IDEA 2026.1, 2026.2 and 2026.3 +* Update Gradle to 9.8.2 + +### Minimum Supported IntelliJ + +* 2026.1 diff --git a/change-notes.html b/change-notes.html index 722f1a30..f0871aba 100644 --- a/change-notes.html +++ b/change-notes.html @@ -1,4 +1,13 @@ +

1.10.0

+
    +
  • Support for IntelliJ IDEA 2026.1, 2026.2 and 2026.3. The minimum supported version is now 2026.1
  • +
  • Support generics in @Mapping source and target references
  • +
  • Do not report unknown source properties when a Map is used as the source parameter
  • +
  • Fix Java expression injection for record targets
  • +
  • Fix Kotlin references in @Mapping annotations not working in IntelliJ IDEA 2026.3
  • +
  • Fix componentModel completion showing unrelated suggestions
  • +

1.9.1

  • Improve error messages for reference inspection
  • diff --git a/gradle.properties b/gradle.properties index 5cf659ab..0e1604fb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,5 +9,4 @@ org.gradle.jvmargs=-Xmx1024m pluginGroup = org.mapstruct pluginName = mapstruct-intellij -pluginVersion = 1.9.2-SNAPSHOT - +pluginVersion = 1.10.0-SNAPSHOT