tree e5fe349029a1b66148ffd7a86e5826fd2ee9ee90
parent 060ebc75b2398533d3d4ef8dc7ae0cf5808f1826
parent ff8505c0e7118f5746f94fda97adef074bcb33d8
author Matthias Benkard <code@mulk.eu> 1675618204 +0000
committer Matthias Benkard <code@mulk.eu> 1675618204 +0000

Update dependency com.diffplug.spotless:spotless-maven-plugin to v2.32.0 (mulk/mulkcms2!16)

This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) | build | minor | `2.31.0` -> `2.32.0` |

---

### Release Notes

<details>
<summary>diffplug/spotless</summary>

### [`v2.32.0`](https://github.com/diffplug/spotless/blob/HEAD/CHANGES.md#&#8203;2320---2023-01-13)

##### Added

-   Add option `editorConfigFile` for `ktLint` [#&#8203;142](https://github.com/diffplug/spotless/issues/142)
    -   **POTENTIALLY BREAKING** `ktlint` step now modifies license headers. Make sure to put `licenseHeader` *after* `ktlint`.
-   Added `skipLinesMatching` option to `licenseHeader` to support formats where license header cannot be immediately added to the top of the file (e.g. xml, sh). ([#&#8203;1441](https://github.com/diffplug/spotless/pull/1441)).
-   Add YAML support through Jackson ([#&#8203;1478](https://github.com/diffplug/spotless/pull/1478))
-   Added support for npm-based [ESLint](https://eslint.org/)-formatter for javascript and typescript ([#&#8203;1453](https://github.com/diffplug/spotless/pull/1453))
-   Better suggested messages when user's default is set by JVM limitation. ([#&#8203;995](https://github.com/diffplug/spotless/pull/995))

##### Fixed

-   Support `ktlint` 0.48+ new rule disabling syntax ([#&#8203;1456](https://github.com/diffplug/spotless/pull/1456)) fixes ([#&#8203;1444](https://github.com/diffplug/spotless/issues/1444))
-   Fix subgroups leading catch all matcher.

##### Changes

-   Bump default version for `prettier` from `2.0.5` to `2.8.1` ([#&#8203;1453](https://github.com/diffplug/spotless/pull/1453))
-   Bump the dev version of Gradle from `7.5.1` to `7.6` ([#&#8203;1409](https://github.com/diffplug/spotless/pull/1409))
    -   We also removed the no-longer-required dependency `org.codehaus.groovy:groovy-xml`
-   Breaking changes to Spotless' internal testing infrastructure `testlib` ([#&#8203;1443](https://github.com/diffplug/spotless/pull/1443))
    -   `ResourceHarness` no longer has any duplicated functionality which was also present in `StepHarness`
    -   `StepHarness` now operates on `Formatter` rather than a `FormatterStep`
    -   `StepHarnessWithFile` now takes a `ResourceHarness` in its constructor to handle the file manipulation parts
    -   Standardized that we test exception *messages*, not types, which will ease the transition to linting later on
    -   Bump default `ktlint` version to latest `0.47.1` -> `0.48.1` ([#&#8203;1456](https://github.com/diffplug/spotless/pull/1456))
-   Switch our publishing infrastructure from CircleCI to GitHub Actions ([#&#8203;1462](https://github.com/diffplug/spotless/pull/1462)).
    -   Help wanted for moving our tests too ([#&#8203;1472](https://github.com/diffplug/spotless/issues/1472))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->