tree ca7dc34be29b343d772dbb7d696e309234004bb8
parent 6fcc5984039a91089e4617e48116dd01ec138b20
parent 589452f215811720cf3122193ba0a76a1b40f617
author Matthias Benkard <code@mulk.eu> 1678164905 +0000
committer Matthias Benkard <code@mulk.eu> 1678164905 +0000

Update dependency com.rometools:rome to v2 (mulk/mulkcms2!20)

This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [com.rometools:rome](http://rometools.com) ([source](https://github.com/rometools/rome)) | compile | major | `1.19.0` -> `2.0.0` |

---

### Release Notes

<details>
<summary>rometools/rome</summary>

### [`v2.0.0`](https://github.com/rometools/rome/releases/tag/2.0.0)

[Compare Source](https://github.com/rometools/rome/compare/1.19.0...2.0.0)

<!-- Release notes generated using configuration in .github/release.yml at 2.0.0 -->

#### What's Changed

##### 🔥 Breaking Changes

-   Switch from Java 6 to Java 11 ([#&#8203;615](https://github.com/rometools/rome/issues/615))
-   Remove deprecated modules ([#&#8203;614](https://github.com/rometools/rome/issues/614))
-   Support parsing of URLs with spaces ([#&#8203;616](https://github.com/rometools/rome/issues/616))
-   Enhance price handling for Media RSS ([#&#8203;617](https://github.com/rometools/rome/issues/617))

##### ⭐ New Features

-   Add support for self links ([#&#8203;618](https://github.com/rometools/rome/issues/618))

##### 🐞 Bug Fixes

-   Fix sunset attribute in Yahoo weather module ([#&#8203;621](https://github.com/rometools/rome/issues/621))
-   Prevent OPML20Generator from creating empty \<docs /> element ([#&#8203;619](https://github.com/rometools/rome/issues/619))
-   Allow zero lengths for enclosures ([#&#8203;625](https://github.com/rometools/rome/issues/625))

##### 🧹 Cleanup

-   Polish ContentItemTest ([#&#8203;620](https://github.com/rometools/rome/issues/620))
-   Remove unused dependencies ([#&#8203;626](https://github.com/rometools/rome/issues/626))

##### ✔ Other Changes

-   Bump actions/checkout from 2.4.0 to 3.3.0 by [@&#8203;dependabot](https://github.com/dependabot) in ([#&#8203;624](https://github.com/rometools/rome/issues/624))
-   Bump maven-compiler-plugin from 3.8.1 to 3.10.1 by [@&#8203;dependabot](https://github.com/dependabot) in ([#&#8203;623](https://github.com/rometools/rome/issues/623))
-   Deprecate URL support in XmlReader ([#&#8203;627](https://github.com/rometools/rome/issues/627))

**Full Changelog**: https://github.com/rometools/rome/compare/1.19.0...2.0.0

</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-->