You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2025/06/26 05:05:24 UTC

(maven-site) branch master updated: Release Maven 4.0.0-rc-4

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-site.git


The following commit(s) were added to refs/heads/master by this push:
     new a29b9901 Release Maven 4.0.0-rc-4
a29b9901 is described below

commit a29b9901b51c0e6f9fbadc12b917fc4a08c088e1
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Jun 26 07:05:13 2025 +0200

    Release Maven 4.0.0-rc-4
---
 content/markdown/docs/4.0.0-rc-4/release-notes.md  |  222 ++
 content/markdown/docs/history.md.vm                |    3 +-
 content/resources/xsd/.htaccess                    |   15 +-
 .../resources/xsd/core-extensions-1.2.0-rc-4.xsd   |   85 +
 content/resources/xsd/lifecycle-2.0.0-rc-4.xsd     |  145 +
 content/resources/xsd/maven-4.1.0-rc-4.xsd         | 2791 ++++++++++++++++++++
 content/resources/xsd/plugin-2.0.0-rc-4.xsd        |  413 +++
 .../xsd/repository-metadata-1.2.0-rc-4.xsd         |  214 ++
 content/resources/xsd/settings-2.0.0-rc-4.xsd      |  739 ++++++
 content/resources/xsd/toolchains-1.2.0-rc-4.xsd    |  101 +
 pom.xml                                            |    2 +-
 11 files changed, 4722 insertions(+), 8 deletions(-)

diff --git a/content/markdown/docs/4.0.0-rc-4/release-notes.md b/content/markdown/docs/4.0.0-rc-4/release-notes.md
new file mode 100644
index 00000000..1cd45c74
--- /dev/null
+++ b/content/markdown/docs/4.0.0-rc-4/release-notes.md
@@ -0,0 +1,222 @@
+# Apache Maven 4.0.0-rc-4 Release Notes
+
+Apache Maven 4.0.0-rc-4 is available for download.
+
+Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
+
+The core release is independent of plugin releases. Further releases of plugins will be made separately.
+
+If you have any questions, please consult:
+
+- the web site: https://maven.apache.org/
+- the maven-user mailing list: https://maven.apache.org/mailing-lists.html
+- the reference documentation: https://maven.apache.org/ref/4.0.0-rc-4/
+
+## Maven 4.x
+
+Maven 4.x is a major release that includes significant improvements and changes.
+Please refer to the [Maven 4.x documentation](https://maven.apache.org/ref/4.0.0-rc-4/) for detailed information about new features and migration guidance.
+
+### Important Notes
+
+- This is a release candidate version intended for testing and feedback
+- Please report any issues to the Maven JIRA: https://issues.apache.org/jira/projects/MNG
+- For production use, consider the stability and compatibility requirements of your project
+
+## Changelog
+
+Maven 4.0.0-rc-4 aims at being the last release candidate before Maven 4.0.0 GA. We'll focus on fixing critical bugs raised before GA.
+Worth mentioning is the new upgrade tool which can be used to fix your `pom.xml` files and make them usable in Maven 4.
+
+## 🚀 New features and improvements
+
+- [[MNG-8765]](https://issues.apache.org/jira/browse/MNG-8765) - Maven Upgrade Tool ([#2407](https://github.com/apache/maven/pull/2407)) @gnodet
+- Maven4 "legacy" mode and more ([#2380](https://github.com/apache/maven/pull/2380)) @cstamas
+- [[MNG-8759]](https://issues.apache.org/jira/browse/MNG-8759) - Restore toString method in DefaultJavaToolchain ([#2411](https://github.com/apache/maven/pull/2411)) @slawekjaranowski
+- [[MNG-8572]](https://issues.apache.org/jira/browse/MNG-8572) - Support DI beans in build extensions ([#2274](https://github.com/apache/maven/pull/2274)) @gnodet
+- [[MNG-8717]](https://issues.apache.org/jira/browse/MNG-8717) - Remove maven-plugin-plugin:addPluginArtifactMetadata from default binding ([#2294](https://github.com/apache/maven/pull/2294)) @slawekjaranowski
+
+## 🐛 Bug Fixes
+
+- Deduplicate filtered dependency graph ([#2493](https://github.com/apache/maven/pull/2493)) @alzimmermsft
+- User properties are not interpolated for paths ([#2480](https://github.com/apache/maven/pull/2480)) @cstamas
+- Move project mutation inside project lock ([#2474](https://github.com/apache/maven/pull/2474)) @cstamas
+- [[MNG-8736]](https://issues.apache.org/jira/browse/MNG-8736) - Fix concurrency issue in model building with profile activation ([#2378](https://github.com/apache/maven/pull/2378)) @gnodet
+- [[MNG-8767]](https://issues.apache.org/jira/browse/MNG-8767) - Add suppressed exceptions to BatchRequestException in AbstractRequestCache ([#2431](https://github.com/apache/maven/pull/2431)) @gnodet
+- [[MNG-8746]](https://issues.apache.org/jira/browse/MNG-8746) - Preserve property insertion order in WrapperProperties ([#2404](https://github.com/apache/maven/pull/2404)) @gnodet
+- [[MNG-8764]](https://issues.apache.org/jira/browse/MNG-8764) - Sort injected lists by @Priority annotation ([#2425](https://github.com/apache/maven/pull/2425)) @gnodet
+- [[MNG-8761]](https://issues.apache.org/jira/browse/MNG-8761) - Add Maven 3 MavenToolchainsXpp3Reader/Writer ([#2412](https://github.com/apache/maven/pull/2412)) @slawekjaranowski
+- [[MNG-8729]](https://issues.apache.org/jira/browse/MNG-8729) - Use correct `outputStream` destination; `request` instead of `path` in `DefaultPluginXmlFactory#write` ([#2312](https://github.com/apache/maven/pull/2312)) @Pankraz76
+- [[MNG-8720]](https://issues.apache.org/jira/browse/MNG-8720) - Fix for symlinked project directory ([#2289](https://github.com/apache/maven/pull/2289)) @cstamas
+- [[MNG-8653]](https://issues.apache.org/jira/browse/MNG-8653) - Fix 'all' phase and  add 'each' phase ([#2191](https://github.com/apache/maven/pull/2191)) @gnodet
+- [[MNG-5668]](https://issues.apache.org/jira/browse/MNG-5668) - Execute after:* phases when build fails ([#2195](https://github.com/apache/maven/pull/2195)) @gnodet
+- [[MNG-8629]](https://issues.apache.org/jira/browse/MNG-8629) - bugfix: If POM has parent and repository stanza, it is used un-interpolated ([#2192](https://github.com/apache/maven/pull/2192)) @cstamas
+- [[MNG-8645]](https://issues.apache.org/jira/browse/MNG-8645) - Fix dependency management section of consumer POM ([#2183](https://github.com/apache/maven/pull/2183)) @gnodet
+- [[MNG-8624]](https://issues.apache.org/jira/browse/MNG-8624) - Fix dependency not being set correctly for unsupported types ([#2153](https://github.com/apache/maven/pull/2153)) @gnodet
+- Fix ITs referencing rc-3-SNAPSHOT ([#2164](https://github.com/apache/maven/pull/2164)) @gnodet
+- [[MNG-8620]](https://issues.apache.org/jira/browse/MNG-8620) - Fix links in SVG ([#2152](https://github.com/apache/maven/pull/2152)) @kwin
+
+## 📝 Documentation updates
+
+- [[MNG-8731]](https://issues.apache.org/jira/browse/MNG-8731) - Use https for xsi:schemaLocation in generated descriptors ([#2341](https://github.com/apache/maven/pull/2341)) @slawekjaranowski
+
+## 👻 Maintenance
+
+- Fix integration tests to use correct Maven version instead of hardcoded 2.1-SNAPSHOT ([#2476](https://github.com/apache/maven/pull/2476)) @gnodet
+- Use local repository in tests ([#2485](https://github.com/apache/maven/pull/2485)) @slawekjaranowski
+- Refactor WrapperProperties template to remove caching and simplify implementation ([#2436](https://github.com/apache/maven/pull/2436)) @gnodet
+- Ban "plain" Guice; downgrade it to 5.1.0 ([#2472](https://github.com/apache/maven/pull/2472)) @cstamas
+- Unfurl CLI ([#2465](https://github.com/apache/maven/pull/2465)) @cstamas
+- Don't ignore SVG files ([#2435](https://github.com/apache/maven/pull/2435)) @elharo
+- Update CONTRIBUTING after GitHub issues enabled ([#2448](https://github.com/apache/maven/pull/2448)) @slawekjaranowski
+- Remove extra variable ([#2398](https://github.com/apache/maven/pull/2398)) @elharo
+- Enable Github Issues ([#2413](https://github.com/apache/maven/pull/2413)) @Bukama
+- [S1161] Add missing @Override to overriding and implementing methods ([#2402](https://github.com/apache/maven/pull/2402)) @Pankraz76
+- use `try-with-resources` statement in `LookupWagonMojo` ([#2426](https://github.com/apache/maven/pull/2426)) @Pankraz76
+- Add UT for cache in FilteredProjectDependencyGraphTest ([#2394](https://github.com/apache/maven/pull/2394)) @slawekjaranowski
+- [[MNG-8764]](https://issues.apache.org/jira/browse/MNG-8764) - centralize domain comparison logic `Binding#getPriorityComparator` ([#2428](https://github.com/apache/maven/pull/2428)) @Pankraz76
+- evolve `Disabled` to `DisabledOnOs(WINDOWS)` ([#2423](https://github.com/apache/maven/pull/2423)) @Pankraz76
+- use `try-with-resources` statement in `CatchMojo` ([#2424](https://github.com/apache/maven/pull/2424)) @Pankraz76
+- chore: resolve unused `Binding#getDisplayString` ([#2429](https://github.com/apache/maven/pull/2429)) @Pankraz76
+- Remove ignored method call ([#2399](https://github.com/apache/maven/pull/2399)) @elharo
+- [[MNG-8750]](https://issues.apache.org/jira/browse/MNG-8750) - Delete unused interface ([#2388](https://github.com/apache/maven/pull/2388)) @elharo
+- chore: resolve false negative suppression `@SuppressWarnings("checkstyle:UnusedLocalVariable")` ([#2369](https://github.com/apache/maven/pull/2369)) @Pankraz76
+- [chore] Modernize codebase with Java improvements - Replace custom null checks with `Objects.requireNonNull` ([#2290](https://github.com/apache/maven/pull/2290)) @Pankraz76
+- Symbolic change (no issue) ([#2383](https://github.com/apache/maven/pull/2383)) @cstamas
+- [[MNG-8713]](https://issues.apache.org/jira/browse/MNG-8713) - SourceRoot.directory() default value should include the module when present ([#2278](https://github.com/apache/maven/pull/2278)) @desruisseaux
+- [[MNG-8727]](https://issues.apache.org/jira/browse/MNG-8727) - Prepare for Java 24 ([#2328](https://github.com/apache/maven/pull/2328)) @cstamas
+- [[MNG-8686]](https://issues.apache.org/jira/browse/MNG-8686) - Add `SourceRoot.matcher(boolean)` method ([#2236](https://github.com/apache/maven/pull/2236)) @desruisseaux
+- Remove unused private methods ([#2310](https://github.com/apache/maven/pull/2310)) @Pankraz76
+- Improve invoker test ([#2308](https://github.com/apache/maven/pull/2308)) @cstamas
+- Pull #2282: Add project icon for `IntelliJ IDEA` ([#2283](https://github.com/apache/maven/pull/2283)) @Pankraz76
+- [[MNG-8718]](https://issues.apache.org/jira/browse/MNG-8718) - Restore Maven 3 compat: ProjectBuilder is unusable for legacy code ([#2285](https://github.com/apache/maven/pull/2285)) @cstamas
+- Test MavenITmng7587Jsr330 should be executed on every JDK ([#2298](https://github.com/apache/maven/pull/2298)) @slawekjaranowski
+- [[MNG-8719]](https://issues.apache.org/jira/browse/MNG-8719) - Restore Maven3 compat: model setInherited(boolean) ([#2288](https://github.com/apache/maven/pull/2288)) @cstamas
+- [[MNG-8614]](https://issues.apache.org/jira/browse/MNG-8614) - Maven Sisu in Maven 4 same as in Maven 3 ([#2284](https://github.com/apache/maven/pull/2284)) @cstamas
+- [[MNG-8712]](https://issues.apache.org/jira/browse/MNG-8712) - dependency version is a requirement, not effective ([#2286](https://github.com/apache/maven/pull/2286)) @hboutemy
+- [[MNG-8670]](https://issues.apache.org/jira/browse/MNG-8670) - Fix concurrent builder missing/wrong project events ([#2251](https://github.com/apache/maven/pull/2251)) @oehme
+- [[MNG-8674]](https://issues.apache.org/jira/browse/MNG-8674) - Deprecate mergeId in the Maven 3 model and remove it in the new model ([#2233](https://github.com/apache/maven/pull/2233)) @gnodet
+- [[MNG-8694]](https://issues.apache.org/jira/browse/MNG-8694) - Fix version interpolation and ternary operator ([#2272](https://github.com/apache/maven/pull/2272)) @kamilkrzywanski
+- [[MNGSITE-393]](https://issues.apache.org/jira/browse/MNGSITE-393) - Remove Maven 1 and 2 references ([#2276](https://github.com/apache/maven/pull/2276)) @elharo
+- Remove unneeded toString and valueOf calls ([#2230](https://github.com/apache/maven/pull/2230)) @elharo
+- Drop unused assembly exclude ([#2266](https://github.com/apache/maven/pull/2266)) @cstamas
+- aether repository system isn't used ([#2237](https://github.com/apache/maven/pull/2237)) @elharo
+- remove unused field ([#2238](https://github.com/apache/maven/pull/2238)) @elharo
+- Cleanup extra semicolons ([#2229](https://github.com/apache/maven/pull/2229)) @elharo
+- [[MNG-8676]](https://issues.apache.org/jira/browse/MNG-8676) - Improve model builder error messages ([#2257](https://github.com/apache/maven/pull/2257)) @cstamas
+- Avoid warning about unthrown exception ([#2217](https://github.com/apache/maven/pull/2217)) @elharo
+- [[MNG-8687]](https://issues.apache.org/jira/browse/MNG-8687) - Restore ability to run on JIMFS ([#2256](https://github.com/apache/maven/pull/2256)) @cstamas
+- [[MNG-8673]](https://issues.apache.org/jira/browse/MNG-8673) - SourceRoot includes and excludes should be String ([#2232](https://github.com/apache/maven/pull/2232)) @gnodet
+- [[MNG-8675]](https://issues.apache.org/jira/browse/MNG-8675) - Correctly deprecate Resource in the model ([#2234](https://github.com/apache/maven/pull/2234)) @gnodet
+- [[MNG-8685]](https://issues.apache.org/jira/browse/MNG-8685) - Better support for CI systems ([#2254](https://github.com/apache/maven/pull/2254)) @cstamas
+- Add types for processor annotation path ([#2239](https://github.com/apache/maven/pull/2239)) @desruisseaux
+- [[MNG-8679]](https://issues.apache.org/jira/browse/MNG-8679) - Align superpom with mvn3 ([#2246](https://github.com/apache/maven/pull/2246)) @cstamas
+- Avoid exposing non-public type outside its scope ([#2220](https://github.com/apache/maven/pull/2220)) @elharo
+- Grammar and typo fixes in javadoc and other comments ([#2222](https://github.com/apache/maven/pull/2222)) @elharo
+- Remove methods that duplicate superclass methods ([#2211](https://github.com/apache/maven/pull/2211)) @elharo
+- [[MNG-8637]](https://issues.apache.org/jira/browse/MNG-8637) - Pull out Standalone API from UTs ([#2226](https://github.com/apache/maven/pull/2226)) @gnodet
+- [[MRESOLVER-673]](https://issues.apache.org/jira/browse/MRESOLVER-673) - Improve model validator error messages ([#2227](https://github.com/apache/maven/pull/2227)) @cstamas
+- [[MNG-8660]](https://issues.apache.org/jira/browse/MNG-8660) - Decouple legacy prompter from implementation details ([#2196](https://github.com/apache/maven/pull/2196)) @oehme
+- Add missing Javadoc to API subprojects ([#2218](https://github.com/apache/maven/pull/2218)) @gnodet
+- prefer primitive type ([#2216](https://github.com/apache/maven/pull/2216)) @elharo
+- autobox ([#2223](https://github.com/apache/maven/pull/2223)) @elharo
+- No catch block needed when rethrowing same exception ([#2210](https://github.com/apache/maven/pull/2210)) @elharo
+- [[MNG-3558]](https://issues.apache.org/jira/browse/MNG-3558) - Ensure properties can be escaped ([#2206](https://github.com/apache/maven/pull/2206)) @gnodet
+- [[MNG-8669]](https://issues.apache.org/jira/browse/MNG-8669) - Add missing context ([#2224](https://github.com/apache/maven/pull/2224)) @cstamas
+- [[MNG-8662]](https://issues.apache.org/jira/browse/MNG-8662) - Add missing methods for removing project source roots ([#2205](https://github.com/apache/maven/pull/2205)) @gnodet
+- [[MNG-4559]](https://issues.apache.org/jira/browse/MNG-4559) - Support spaces in jvm.config ([#2213](https://github.com/apache/maven/pull/2213)) @gnodet
+- prefer isEmpty ([#2215](https://github.com/apache/maven/pull/2215)) @elharo
+- [CI] Disable Mimir JGroups node ([#2212](https://github.com/apache/maven/pull/2212)) @cstamas
+- Access static fields in a static way ([#2209](https://github.com/apache/maven/pull/2209)) @elharo
+- Make maven-cli module tests use Mimir as well ([#2207](https://github.com/apache/maven/pull/2207)) @cstamas
+- Remove a few thousand lines of commented and obsolete code ([#2200](https://github.com/apache/maven/pull/2200)) @elharo
+- minor cleanups ([#2199](https://github.com/apache/maven/pull/2199)) @elharo
+- [[MNG-8467]](https://issues.apache.org/jira/browse/MNG-8467) - Add links to configuration pages in index.xml ([#2201](https://github.com/apache/maven/pull/2201)) @gnodet
+- Add missing headers ([#2202](https://github.com/apache/maven/pull/2202)) @gnodet
+- [[MNG-8598]](https://issues.apache.org/jira/browse/MNG-8598) - Add support for MAVEN_PROJECTBASEDIR substitution in jvm.config ([#2194](https://github.com/apache/maven/pull/2194)) @gnodet
+- [[MNG-8548]](https://issues.apache.org/jira/browse/MNG-8548) - Add cycle detection to dependency injection ([#2197](https://github.com/apache/maven/pull/2197)) @gnodet
+- Remove some unnecessary statements ([#2190](https://github.com/apache/maven/pull/2190)) @elharo
+- Add test to suite ([#2198](https://github.com/apache/maven/pull/2198)) @gnodet
+- [[MNG-8642]](https://issues.apache.org/jira/browse/MNG-8642) - Integrate the testing framework inside Maven Core ([#2193](https://github.com/apache/maven/pull/2193)) @gnodet
+- [[MNG-8648]](https://issues.apache.org/jira/browse/MNG-8648) - Concurrent executor fires wrong ProjectStarted event ([#2189](https://github.com/apache/maven/pull/2189)) @oehme
+- [[MNG-8647]](https://issues.apache.org/jira/browse/MNG-8647) - Set the default source directory to `src/${scope}/${lang}` as per documentation ([#2180](https://github.com/apache/maven/pull/2180)) @desruisseaux
+- [[MNG-8646]](https://issues.apache.org/jira/browse/MNG-8646) - Make IT tests use "outer" Mimir caching as well ([#2176](https://github.com/apache/maven/pull/2176)) @cstamas
+- Remove redundant code ([#2188](https://github.com/apache/maven/pull/2188)) @elharo
+- Expected argument comes first in JUnit ([#2187](https://github.com/apache/maven/pull/2187)) @elharo
+- Reenable many old style tests ([#2182](https://github.com/apache/maven/pull/2182)) @elharo
+- [[MNG-8490]](https://issues.apache.org/jira/browse/MNG-8490) - Add an XmlService and a builder + implementation for XmlNode ([#2150](https://github.com/apache/maven/pull/2150)) @gnodet
+- requireNonNull ([#2181](https://github.com/apache/maven/pull/2181)) @elharo
+- Remove old symbolic link in ITmng8400 test ([#2178](https://github.com/apache/maven/pull/2178)) @slawekjaranowski
+- [[MNG-8612]](https://issues.apache.org/jira/browse/MNG-8612) - Document Node#asString and remove Version#asString and VersionConstraint#asString ([#2172](https://github.com/apache/maven/pull/2172)) @gnodet
+- [[MNG-8510]](https://issues.apache.org/jira/browse/MNG-8510) - Avoid duplicate Utils classes ([#2173](https://github.com/apache/maven/pull/2173)) @gnodet
+- [[MNG-8639]](https://issues.apache.org/jira/browse/MNG-8639) - Check namespaces when reading XML models ([#2170](https://github.com/apache/maven/pull/2170)) @gnodet
+- [[MNG-8511]](https://issues.apache.org/jira/browse/MNG-8511) - Explains the meaning of cling ([#2174](https://github.com/apache/maven/pull/2174)) @gnodet
+- [IT] Refactor executor ([#2175](https://github.com/apache/maven/pull/2175)) @cstamas
+- [[MNG-8633]](https://issues.apache.org/jira/browse/MNG-8633) - Initialize entities map lazily ([#2165](https://github.com/apache/maven/pull/2165)) @gnodet
+- Replace a `NullPointerException` by a more explicit error message ([#2160](https://github.com/apache/maven/pull/2160)) @desruisseaux
+- Restore Jenkins build for master ([#2151](https://github.com/apache/maven/pull/2151)) @olamy
+- [experiment] Mimir ([#2144](https://github.com/apache/maven/pull/2144)) @cstamas
+- [[MNG-8615] [MNG-8616]](https://issues.apache.org/jira/browse/MNG-8615] [MNG-8616) - Maven core extensions handling improvements ([#2147](https://github.com/apache/maven/pull/2147)) @cstamas
+- Minor Javadoc cleanup ([#2126](https://github.com/apache/maven/pull/2126)) @elharo
+- [[MNG-8613]](https://issues.apache.org/jira/browse/MNG-8613) - Copy edit dependency javadocs ([#2143](https://github.com/apache/maven/pull/2143)) @elharo
+
+## 🔧 Build
+
+- Improve configuration for dependabot in 3.x branch ([#2447](https://github.com/apache/maven/pull/2447)) @slawekjaranowski
+- Remove branch after merge ([#2323](https://github.com/apache/maven/pull/2323)) @slawekjaranowski
+
+## 📦 Dependency updates
+
+- Bump xmlunitVersion from 2.10.2 to 2.10.3 ([#2501](https://github.com/apache/maven/pull/2501)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.junit:junit-bom from 5.13.0 to 5.13.1 ([#2459](https://github.com/apache/maven/pull/2459)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.junit.jupiter:junit-jupiter from 5.13.0 to 5.13.1 ([#2460](https://github.com/apache/maven/pull/2460)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 ([#2433](https://github.com/apache/maven/pull/2433)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.junit.jupiter:junit-jupiter from 5.12.2 to 5.13.0 ([#2420](https://github.com/apache/maven/pull/2420)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump net.sourceforge.pmd:pmd-core from 7.13.0 to 7.14.0 ([#2421](https://github.com/apache/maven/pull/2421)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.junit:junit-bom from 5.12.2 to 5.13.0 ([#2422](https://github.com/apache/maven/pull/2422)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Update Mimir to 0.7.8 ([#2416](https://github.com/apache/maven/pull/2416)) @cstamas
+- Bump org.codehaus.mojo:exec-maven-plugin from 3.5.0 to 3.5.1 ([#2397](https://github.com/apache/maven/pull/2397)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump jlineVersion from 3.30.3 to 3.30.4 ([#2405](https://github.com/apache/maven/pull/2405)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump com.fasterxml.woodstox:woodstox-core from 7.1.0 to 7.1.1 ([#2409](https://github.com/apache/maven/pull/2409)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Upgrade Maven Bom Builder Plugin ([#2408](https://github.com/apache/maven/pull/2408)) @cstamas
+- [[MNG-8737]](https://issues.apache.org/jira/browse/MNG-8737) - Bump xmlunitVersion from 2.10.1 to 2.10.2 ([#2391](https://github.com/apache/maven/pull/2391)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8740][MNG-8733]](https://issues.apache.org/jira/browse/MNG-8740][MNG-8733) - Bump jlineVersion from 3.30.0 to 3.30.3 ([#2379](https://github.com/apache/maven/pull/2379)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8739]](https://issues.apache.org/jira/browse/MNG-8739) - Bump net.sourceforge.pmd:pmd-core from 7.12.0 to 7.13.0 ([#2335](https://github.com/apache/maven/pull/2335)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8738]](https://issues.apache.org/jira/browse/MNG-8738) - Bump mockitoVersion from 5.17.0 to 5.18.0 ([#2362](https://github.com/apache/maven/pull/2362)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8737]](https://issues.apache.org/jira/browse/MNG-8737) - Bump xmlunitVersion from 2.10.0 to 2.10.1 ([#2355](https://github.com/apache/maven/pull/2355)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8728]](https://issues.apache.org/jira/browse/MNG-8728) - Update Eclipse Sisu to 0.9.0.M4 ([#2358](https://github.com/apache/maven/pull/2358)) @cstamas
+- [[MNG-8732]](https://issues.apache.org/jira/browse/MNG-8732) - Bump Resolver to 2.0.9 ([#2352](https://github.com/apache/maven/pull/2352)) @cstamas
+- [[MNG-8726]](https://issues.apache.org/jira/browse/MNG-8726) - Bump jlineVersion from 3.29.0 to 3.30.0 ([#2325](https://github.com/apache/maven/pull/2325)) @cstamas
+- Bump org.eclipse.jetty:jetty-server from 9.4.55.v20240627 to 9.4.56.v20240826 in /its/core-it-suite ([#2305](https://github.com/apache/maven/pull/2305)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump commons-jxpath:commons-jxpath from 1.3 to 1.4.0 ([#2267](https://github.com/apache/maven/pull/2267)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Update Maveniverse stuff ([#2269](https://github.com/apache/maven/pull/2269)) @cstamas
+- Bump com.google.guava:guava from 33.4.7-jre to 33.4.8-jre ([#2265](https://github.com/apache/maven/pull/2265)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.codehaus.plexus:plexus-velocity from 2.2.0 to 2.2.1 ([#2259](https://github.com/apache/maven/pull/2259)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.junit:junit-bom from 5.12.1 to 5.12.2 ([#2260](https://github.com/apache/maven/pull/2260)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump commons-io:commons-io from 2.18.0 to 2.19.0 ([#2261](https://github.com/apache/maven/pull/2261)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.junit.jupiter:junit-jupiter from 5.11.4 to 5.12.2 ([#2262](https://github.com/apache/maven/pull/2262)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump com.google.guava:guava from 33.4.6-jre to 33.4.7-jre ([#2263](https://github.com/apache/maven/pull/2263)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8677]](https://issues.apache.org/jira/browse/MNG-8677) - Bump to Resolver 2.0.8 and more ([#2158](https://github.com/apache/maven/pull/2158)) @cstamas
+- Bump org.codehaus.plexus:plexus-classworlds from 2.8.0 to 2.9.0 ([#2247](https://github.com/apache/maven/pull/2247)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump io.github.olamy.maven.plugins:jacoco-aggregator-maven-plugin from 1.0.1 to 1.0.2 ([#2248](https://github.com/apache/maven/pull/2248)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.codehaus.plexus:plexus-testing from 1.4.0 to 1.5.0 ([#2249](https://github.com/apache/maven/pull/2249)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.codehaus.plexus:plexus-interactivity-api from 1.3 to 1.4 ([#2250](https://github.com/apache/maven/pull/2250)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.codehaus.plexus:plexus-xml from 4.0.4 to 4.1.0 ([#2242](https://github.com/apache/maven/pull/2242)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump io.github.olamy.maven.plugins:jacoco-aggregator-maven-plugin from 1.0.0 to 1.0.1 ([#2244](https://github.com/apache/maven/pull/2244)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump mockitoVersion from 5.16.1 to 5.17.0 ([#2245](https://github.com/apache/maven/pull/2245)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.codehaus.plexus:plexus-interpolation from 1.27 to 1.28 ([#2243](https://github.com/apache/maven/pull/2243)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.jacoco:jacoco-maven-plugin from 0.8.12 to 0.8.13 ([#2225](https://github.com/apache/maven/pull/2225)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump net.bytebuddy:byte-buddy from 1.17.4 to 1.17.5 ([#2214](https://github.com/apache/maven/pull/2214)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8663]](https://issues.apache.org/jira/browse/MNG-8663) - Bump asmVersion from 9.7.1 to 9.8 ([#2204](https://github.com/apache/maven/pull/2204)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump Mimir from 0.4.0 to 0.4.1 ([#2203](https://github.com/apache/maven/pull/2203)) @cstamas
+- Bump com.google.guava:guava from 33.4.5-jre to 33.4.6-jre ([#2186](https://github.com/apache/maven/pull/2186)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump net.bytebuddy:byte-buddy from 1.17.2 to 1.17.4 ([#2179](https://github.com/apache/maven/pull/2179)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8641]](https://issues.apache.org/jira/browse/MNG-8641) - Bump org.apache.maven:maven-parent from 43 to 44 ([#2162](https://github.com/apache/maven/pull/2162)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump com.google.guava:guava from 33.4.0-jre to 33.4.5-jre ([#2166](https://github.com/apache/maven/pull/2166)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- [[MNG-8630]](https://issues.apache.org/jira/browse/MNG-8630) - Bump ch.qos.logback:logback-classic from 1.5.17 to 1.5.18 ([#2161](https://github.com/apache/maven/pull/2161)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump mockitoVersion from 5.16.0 to 5.16.1 ([#2156](https://github.com/apache/maven/pull/2156)) @[dependabot[bot]](https://github.com/apps/dependabot)
+- Bump org.junit:junit-bom from 5.12.0 to 5.12.1 ([#2155](https://github.com/apache/maven/pull/2155)) @[dependabot[bot]](https://github.com/apps/dependabot)
+
+## Full changelog
+
+For a full list of changes, please refer to the [GitHub release page](https://github.com/apache/maven/releases/tag/maven-4.0.0-rc-4).
diff --git a/content/markdown/docs/history.md.vm b/content/markdown/docs/history.md.vm
index ce5c9159..3406c272 100644
--- a/content/markdown/docs/history.md.vm
+++ b/content/markdown/docs/history.md.vm
@@ -75,7 +75,8 @@ $esc.h$esc.h Maven 4.0+ (not yet GA)
 <!--  release( date version announce latest-minor jdk rowspan ) -->
 <!-- The following two lines needs to be fixed in x days if the archive picks up the announcement mail. -->
 
-#release( "2025-03-10" "4.0.0-rc-3" "https://lists.apache.org/thread/x4mvlyx6py6r0wjz5hl871vlvbv6vn94" "true" "Java 17" "7" )
+#release( "TBD" "4.0.0-rc-4" "TBD" "true" "Java 17" "8" )
+#release( "2025-03-10" "4.0.0-rc-3" "https://lists.apache.org/thread/x4mvlyx6py6r0wjz5hl871vlvbv6vn94" "" "" "" )
 #release( "2024-12-14" "4.0.0-rc-2" "https://lists.apache.org/thread/82dzfcbr4nc941848k5nn988sfkz3z6t" "" "" "" )
 #release( "2024-11-28" "4.0.0-rc-1" "https://lists.apache.org/thread/ddr4q2r642mxpg0w5h6zt2o1xkdyk0w5" "" "" "" )
 #release( "2024-10-22" "4.0.0-beta-5" "https://lists.apache.org/thread/c1cq43y6onn144gkfmhwg82z41fb35sp" "" "" "" )
diff --git a/content/resources/xsd/.htaccess b/content/resources/xsd/.htaccess
index af8ad79d..c298e322 100644
--- a/content/resources/xsd/.htaccess
+++ b/content/resources/xsd/.htaccess
@@ -1,8 +1,11 @@
-Redirect /xsd/core-extensions-1.2.0.xsd /xsd/core-extensions-1.2.0-rc-3.xsd
-Redirect /xsd/lifecycle-2.0.0.xsd /xsd/lifecycle-2.0.0-rc-3.xsd
-Redirect /xsd/maven-4.1.0.xsd /xsd/maven-4.1.0-rc-3.xsd
-Redirect /xsd/plugin-2.0.0.xsd /xsd/plugin-2.0.0-rc-3.xsd
-Redirect /xsd/repository-metadata-1.2.0.xsd /xsd/repository-metadata-1.2.0-rc-3.xsd
-Redirect /xsd/settings-2.0.0.xsd /xsd/settings-2.0.0-rc-3.xsd
+# Updated for Maven 4.0.0-rc-4 (6 updated, 1 added)
+Redirect /xsd/core-extensions-1.2.0.xsd /xsd/core-extensions-1.2.0-rc-4.xsd
+Redirect /xsd/lifecycle-2.0.0.xsd /xsd/lifecycle-2.0.0-rc-4.xsd
+Redirect /xsd/maven-4.1.0.xsd /xsd/maven-4.1.0-rc-4.xsd
+Redirect /xsd/plugin-2.0.0.xsd /xsd/plugin-2.0.0-rc-4.xsd
+Redirect /xsd/repository-metadata-1.2.0.xsd /xsd/repository-metadata-1.2.0-rc-4.xsd
+Redirect /xsd/settings-2.0.0.xsd /xsd/settings-2.0.0-rc-4.xsd
 Redirect /xsd/toolchains-1.1.0.xsd /xsd/toolchains-1.1.0-rc-3.xsd
 
+
+Redirect /xsd/toolchains-1.2.0.xsd /xsd/toolchains-1.2.0-rc-4.xsd
diff --git a/content/resources/xsd/core-extensions-1.2.0-rc-4.xsd b/content/resources/xsd/core-extensions-1.2.0-rc-4.xsd
new file mode 100644
index 00000000..fc575eb0
--- /dev/null
+++ b/content/resources/xsd/core-extensions-1.2.0-rc-4.xsd
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one             -->
+<!-- or more contributor license agreements. See the NOTICE file            -->
+<!-- distributed with this work for additional information                  -->
+<!-- regarding copyright ownership. The ASF licenses this file              -->
+<!-- to you under the Apache License, Version 2.0 (the                      -->
+<!-- "License"); you may not use this file except in compliance             -->
+<!-- with the License. You may obtain a copy of the License at              -->
+<!--                                                                        -->
+<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
+<!--                                                                        -->
+<!-- Unless required by applicable law or agreed to in writing,             -->
+<!-- software distributed under the License is distributed on an            -->
+<!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY                 -->
+<!-- KIND, either express or implied. See the License for the               -->
+<!-- specific language governing permissions and limitations                -->
+<!-- under the License.                                                     -->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.4.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/EXTENSIONS/1.2.0" targetNamespace="http://maven.apache.org/EXTENSIONS/1.2.0">
+  <xs:element name="extensions" type="CoreExtensions">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Extensions to load.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="CoreExtensions">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Extensions to load.</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element minOccurs="0" name="extension" type="CoreExtension" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">A set of build extensions to use from this project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="CoreExtension">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Describes a build extension to utilise.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID of the extension&apos;s artifact.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact ID of the extension.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The version of the extension.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="classLoadingStrategy" type="xs:string" default="self-first">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">The class loading strategy: &apos;self-first&apos; (the default), &apos;parent-first&apos; (loads classes from the parent, then from the extension) or &apos;plugin&apos; (follows the rules from extensions defined as plugins).</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">1.2.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/lifecycle-2.0.0-rc-4.xsd b/content/resources/xsd/lifecycle-2.0.0-rc-4.xsd
new file mode 100644
index 00000000..a509c16f
--- /dev/null
+++ b/content/resources/xsd/lifecycle-2.0.0-rc-4.xsd
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one             -->
+<!-- or more contributor license agreements. See the NOTICE file            -->
+<!-- distributed with this work for additional information                  -->
+<!-- regarding copyright ownership. The ASF licenses this file              -->
+<!-- to you under the Apache License, Version 2.0 (the                      -->
+<!-- "License"); you may not use this file except in compliance             -->
+<!-- with the License. You may obtain a copy of the License at              -->
+<!--                                                                        -->
+<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
+<!--                                                                        -->
+<!-- Unless required by applicable law or agreed to in writing,             -->
+<!-- software distributed under the License is distributed on an            -->
+<!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY                 -->
+<!-- KIND, either express or implied. See the License for the               -->
+<!-- specific language governing permissions and limitations                -->
+<!-- under the License.                                                     -->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.4.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/LIFECYCLE/2.0.0" targetNamespace="http://maven.apache.org/LIFECYCLE/2.0.0">
+  <xs:element name="lifecycles" type="LifecycleConfiguration">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Root element of the {@code lifecycle.xml} file.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="LifecycleConfiguration">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Root element of the {@code lifecycle.xml} file.</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element minOccurs="0" name="lifecycle" type="Lifecycle" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="Lifecycle">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">A custom lifecycle mapping definition.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The ID of this lifecycle, for identification in the mojo descriptor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="phases">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The phase mappings for this lifecycle.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Phase" name="phase" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Phase">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">A phase mapping definition.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The ID of this phase, e.g., {@code generate-sources}.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="executions">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The goals to execute within the phase.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Execution" name="execution" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Configuration to pass to all goals run in this phase.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="executionPoint" type="xs:string" default="" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">2.0.0+</xs:documentation>
+        <xs:documentation source="description">If specified, identifies this phase as a dynamic phase to decorate the specified phase id, e.g. {@code after} or {@code before}.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="priority" type="xs:int" default="0" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">2.0.0+</xs:documentation>
+        <xs:documentation source="description">If specified, identifies a within phase prioritization of executions.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="Execution">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">A set of goals to execute.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Configuration to pass to the goals.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="goals">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The goals to execute.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="goal" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/maven-4.1.0-rc-4.xsd b/content/resources/xsd/maven-4.1.0-rc-4.xsd
new file mode 100644
index 00000000..c093cfd2
--- /dev/null
+++ b/content/resources/xsd/maven-4.1.0-rc-4.xsd
@@ -0,0 +1,2791 @@
+<?xml version="1.0"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one             -->
+<!-- or more contributor license agreements. See the NOTICE file            -->
+<!-- distributed with this work for additional information                  -->
+<!-- regarding copyright ownership. The ASF licenses this file              -->
+<!-- to you under the Apache License, Version 2.0 (the                      -->
+<!-- "License"); you may not use this file except in compliance             -->
+<!-- with the License. You may obtain a copy of the License at              -->
+<!--                                                                        -->
+<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
+<!--                                                                        -->
+<!-- Unless required by applicable law or agreed to in writing,             -->
+<!-- software distributed under the License is distributed on an            -->
+<!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY                 -->
+<!-- KIND, either express or implied. See the License for the               -->
+<!-- specific language governing permissions and limitations                -->
+<!-- under the License.                                                     -->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.4.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/POM/4.1.0" targetNamespace="http://maven.apache.org/POM/4.1.0">
+  <xs:element name="project" type="Model">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;project&gt;} element is the root of the descriptor.
+        The following table lists all of the possible child elements.
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="Model">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;project&gt;} element is the root of the descriptor.
+        The following table lists all of the possible child elements.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="modelVersion" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Declares to which version of project descriptor this POM conforms.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="parent" type="Parent">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The location of the parent project, if one exists. Values from the parent
+            project will be the default for this project if they are left unspecified. The location
+            is given as a group ID, artifact ID and version.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            A universally unique identifier for a project. It is normal to
+            use a fully-qualified package name to distinguish it from other
+            projects with a similar name (eg. {@code org.apache.maven}).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The identifier for this artifact that is unique within the group given by the
+            group ID. An artifact is something that is either produced or used by a project.
+            Examples of artifacts produced by Maven for a project include: JARs, source and binary
+            distributions, and WARs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The current version of the artifact produced by this project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="packaging" type="xs:string" default="jar">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The type of artifact this project produces, for example {@code jar},
+              {@code war},
+              {@code ear},
+              {@code pom}.
+            Plugins can create their own packaging, and
+            therefore their own packaging types,
+            so this list does not contain all possible types.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="description" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">A detailed description of the project, used by Maven whenever it needs to
+            describe the project, such as on the website. While this element can be specified as
+            CDATA to enable the use of HTML tags within the description, it is discouraged to allow
+            plain text representation. If you need to modify the index page of the generated website,
+            you are able to specify your own instead of adjusting this text.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The URL to the project&apos;s homepage.
+            &lt;p&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + (artifactId or project.directory property), or just parent value if
+            project&apos;s {@code child.project.url.inherit.append.path=&quot;false&quot;}&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="inceptionYear" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The year of the project&apos;s inception, specified with 4 digits. This value is
+            used when generating copyright notices as well as being informational.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="organization" type="Organization">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">This element describes various attributes of the organization to which the
+            project belongs. These attributes are utilized when documentation is created (for
+            copyright notices and links).</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="licenses">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            This element describes all the licenses for this project.
+            Each license is described by a {@code license} element, which
+            is then described by additional elements.
+            Projects should only list the license(s) that applies to the project
+            and not the licenses that apply to dependencies.
+            If multiple licenses are listed, it is assumed that the user can select
+            any of them, not that they must accept all.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="License" name="license" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="developers">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Describes the committers of a project.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Developer" name="developer" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="contributors">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Describes the contributors to a project that are not yet committers.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Contributor" name="contributor" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="mailingLists">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Contains information about a project&apos;s mailing lists.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="MailingList" name="mailingList" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="prerequisites" type="Prerequisites">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Describes the prerequisites in the build environment for this project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="modules">
+        <xs:annotation>
+          <xs:documentation source="version">[4.0.0 =&gt; 4.1.0]</xs:documentation>
+          <xs:documentation source="description">
+            @deprecated Use {@link #subprojects} instead.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="module" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="subprojects">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0</xs:documentation>
+          <xs:documentation source="description">The subprojects (formerly called modules) to build as a part of this
+            project. Each subproject listed is a relative path to the directory containing the subproject.
+            To be consistent with the way default URLs are calculated from parent, it is recommended
+            to have subproject names match artifact ids.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="subproject" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="scm" type="Scm">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Specification for the SCM used by the project, such as CVS, Subversion, etc.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="issueManagement" type="IssueManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The project&apos;s issue management system information.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="ciManagement" type="CiManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The project&apos;s continuous integration information.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="distributionManagement" type="DistributionManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Distribution information for a project that enables deployment of the site
+            and artifacts to remote web servers and repositories respectively.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Properties that can be used throughout the POM as a substitution, and
+            are used as filters in resources if enabled.
+            The format is {@code &lt;name&gt;value&lt;/name&gt;}.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencyManagement" type="DependencyManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Default dependency information for projects that inherit from this one. The
+            dependencies in this section are not immediately resolved. Instead, when a POM derived
+            from this one declares a dependency described by a matching groupId and artifactId, the
+            version and other values from this section are used for that dependency if they were not
+            already specified.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencies">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all the dependencies associated with a project.
+            These dependencies are used to construct a classpath for your
+            project during the build process. They are automatically downloaded from the
+            repositories defined in this project.
+
+            @see &lt;a href=&quot;https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html&quot;&gt;Dependency mechanism&lt;/a&gt;
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Dependency" name="dependency" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="repositories">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering dependencies and
+            extensions.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Repository" name="repository" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginRepositories">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering plugins for builds and
+            reports.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Repository" name="pluginRepository" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="build" type="Build">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Information required to build the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="reporting" type="Reporting">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element includes the specification of report plugins to use
+            to generate the reports on the Maven-generated site.
+            These reports will be run when a user executes {@code mvn site}.
+            All the reports will be included in the navigation bar for browsing.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="profiles">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">A listing of project-local build profiles which will modify the build process
+            when activated.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Profile" name="profile" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="child.project.url.inherit.append.path" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">4.0.0+</xs:documentation>
+        <xs:documentation source="description">
+            
+            When children inherit from project&apos;s url, append path or not? Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}
+            &lt;p&gt;&lt;b&gt;Default value is&lt;/b&gt;: {@code true}&lt;/p&gt;
+            @since Maven 3.6.1
+            
+          </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="root" type="xs:boolean" default="false" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">4.1.0+</xs:documentation>
+        <xs:documentation source="description">
+            Indicates that this project is the root project, located in the upper directory of the source tree.
+            This is the directory which may contain the .mvn directory.
+
+            @since Maven 4.0.0
+          </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="preserve.model.version" type="xs:boolean" default="false" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">4.1.0+</xs:documentation>
+        <xs:documentation source="description">
+            Indicates if the build POM for this project should be preserved or downgraded to the lowest
+            compatible version.
+            @since Maven 4.0.0
+          </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="License">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Describes the licenses for this project. This is used to generate the license
+        page of the project&apos;s website, as well as being taken into consideration in other reporting
+        and validation. The licenses listed for the project are that of the project itself, and not
+        of dependencies.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full legal name of the license.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The official url for the license text.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="distribution" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The primary method by which this project may be distributed.
+            &lt;dl&gt;
+              &lt;dt&gt;repo&lt;/dt&gt;
+              &lt;dd&gt;may be downloaded from the Maven repository&lt;/dd&gt;
+              &lt;dt&gt;manual&lt;/dt&gt;
+              &lt;dd&gt;user must manually download and install the dependency.&lt;/dd&gt;
+            &lt;/dl&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="comments" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Addendum information pertaining to this license.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="CiManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The {@code &lt;ciManagement&gt;} element contains information required to the
+        continuous integration system of the project.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="system" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The name of the continuous integration system, e.g. {@code continuum}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            URL for the continuous integration system used by the project if it has a web interface.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="notifiers">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Configuration for notifying developers/users when a build is unsuccessful,
+            including user information and notification mode.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Notifier" name="notifier" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Notifier">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Configures one method for notifying users/developers when a build breaks.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="type" type="xs:string" default="mail">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The mechanism used to deliver notifications.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sendOnError" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to send notifications on error.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sendOnFailure" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to send notifications on failure.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sendOnSuccess" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to send notifications on success.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sendOnWarning" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to send notifications on warning.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="address" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            @deprecated Where to send the notification to - eg email address.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Extended configuration specific to this notifier goes here.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Scm">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;scm&gt;} element contains information required to the SCM
+        (Source Control Management) of the project.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="connection" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The source control management system URL
+            that describes the repository and how to connect to the
+            repository.
+            This connection is read-only.
+            &lt;br&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + (artifactId or project.directory property), or just parent value if
+            scm&apos;s {@code child.scm.connection.inherit.append.path=&quot;false&quot;}
+            @see &lt;a href=&quot;https://maven.apache.org/scm/scm-url-format.html&quot;&gt;URL format&lt;/a&gt;
+            @see &lt;a href=&quot;https://maven.apache.org/scm/scms-overview.html&quot;&gt;list of supported SCMs&lt;/a&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="developerConnection" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Just like {@code connection}, but for developers, i.e. this scm connection
+            will not be read only.
+            &lt;p&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + (artifactId or project.directory property), or just parent value if
+            scm&apos;s {@code child.scm.developerConnection.inherit.append.path=&quot;false&quot;}.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="tag" type="xs:string" default="HEAD">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The tag of current code. By default, it&apos;s set to HEAD during development.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The URL to the project&apos;s browsable SCM repository, such as ViewVC or Fisheye.
+            &lt;p&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + (artifactId or project.directory property), or just parent value if
+            scm&apos;s {@code child.scm.url.inherit.append.path=&quot;false&quot;}&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="child.scm.connection.inherit.append.path" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">4.0.0+</xs:documentation>
+        <xs:documentation source="description">
+            
+            When children inherit from scm connection, append path or not? Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}
+            &lt;p&gt;&lt;b&gt;Default value is&lt;/b&gt;: {@code true}&lt;/p&gt;
+            @since Maven 3.6.1
+            
+          </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="child.scm.developerConnection.inherit.append.path" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">4.0.0+</xs:documentation>
+        <xs:documentation source="description">
+            
+            When children inherit from scm developer connection, append path or not? Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}
+            &lt;p&gt;&lt;b&gt;Default value is&lt;/b&gt;: {@code true}&lt;/p&gt;
+            @since Maven 3.6.1
+            
+          </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="child.scm.url.inherit.append.path" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">4.0.0+</xs:documentation>
+        <xs:documentation source="description">
+            
+            When children inherit from scm url, append path or not? Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}
+            &lt;br&gt;&lt;b&gt;Default value is&lt;/b&gt;: {@code true}
+            @since Maven 3.6.1
+            
+          </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="IssueManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Information about the issue tracking (or bug tracking) system used to manage this
+        project.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="system" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The name of the issue management system, e.g. Bugzilla</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">URL for the issue management system used by the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DependencyManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Section for management of default dependency information for use in a group of
+        POMs.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="dependencies">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The dependencies specified here are not used until they are referenced in a
+            POM within the group. This allows the specification of a &quot;standard&quot; version for a
+            particular dependency.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Dependency" name="dependency" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Dependency">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The {@code &lt;dependency&gt;} element contains information about a dependency
+        of the project.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The project group that produced the dependency, e.g.
+            {@code org.apache.maven}.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The unique id for an artifact produced by the project group, e.g.
+            {@code maven-artifact}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The version requirement of the dependency, e.g. {@code 3.2.1}. The actual version will be resolved based on the usage context.
+            Version requirement can also be specified as a range of versions, e.g. {@code [3.2.0,)}. This is discouraged as it may break &lt;i&gt;predictability&lt;/i&gt; of resolved version.
+            See &lt;a href=&quot;https://s.apache.org/dependency-version&quot;&gt;dependency version requirement documentation&lt;/a&gt;
+            and &lt;a href=&quot;https://s.apache.org/transitive-dependencies-resolution&quot;&gt;transitive dependencies resolution&lt;/a&gt; for more details.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="type" type="xs:string" default="jar">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The type of dependency, that will be mapped to a file extension, an optional classifier, and a few other attributes.
+            Some examples are {@code jar}, {@code war}, {@code ejb-client}
+            and {@code test-jar}: see &lt;a href=&quot;../maven-core/artifact-handlers.html&quot;&gt;default
+            artifact handlers&lt;/a&gt; for a list. New types can be defined by extensions, so this is not a complete list.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="classifier" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The classifier of the dependency. It is appended to
+            the filename after the version. This allows:
+            &lt;ul&gt;
+            &lt;li&gt;referring to attached artifact, for example {@code sources} and {@code javadoc}:
+            see &lt;a href=&quot;../maven-core/artifact-handlers.html&quot;&gt;default artifact handlers&lt;/a&gt; for a list,&lt;/li&gt;
+            &lt;li&gt;distinguishing two artifacts
+            that belong to the same POM but were built differently.
+            For example, {@code jdk14} and {@code jdk15}.&lt;/li&gt;
+            &lt;/ul&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="scope" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The scope of the dependency - {@code compile}, {@code runtime},
+            {@code test}, {@code system}, and {@code provided}. Used to
+            calculate the various classpaths used for compilation, testing, and so on.
+            It also assists in determining which artifacts to include in a distribution of
+            this project. For more information, see
+            &lt;a href=&quot;https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html&quot;&gt;the
+            dependency mechanism&lt;/a&gt;. The default scope is {@code compile}.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="systemPath" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            FOR SYSTEM SCOPE ONLY. Note that use of this property is &lt;b&gt;discouraged&lt;/b&gt;
+            and may be replaced in later versions. This specifies the path on the filesystem
+            for this dependency.
+            Requires an absolute path for the value, not relative.
+            Use a property that gives the machine specific absolute path,
+            e.g. {@code ${java.home}}.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="exclusions">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Lists a set of artifacts that should be excluded from this dependency&apos;s
+            artifact list when it comes to calculating transitive dependencies.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Exclusion" name="exclusion" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="optional" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Indicates the dependency is optional for use of this library. While the
+            version of the dependency will be taken into account for dependency calculation if the
+            library is used elsewhere, it will not be passed on transitively. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code false}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Exclusion">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The {@code &lt;exclusion&gt;} element contains information required to exclude
+        an artifact to the project.
+        &lt;p&gt;
+        The {@code groupId} and {@code artifactId} fields are interpreted as glob patterns.
+
+        @see java.nio.file.FileSystem#getPathMatcher
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID of the project to exclude.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact ID of the project to exclude.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Parent">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The {@code &lt;parent&gt;} element contains information required to locate the parent project from which
+        this project will inherit from.
+        &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The children of this element are not interpolated and must be given as literal values.&lt;/p&gt;
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group id of the parent project to inherit from.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact id of the parent project to inherit from.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The version of the parent project to inherit.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="relativePath" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The relative path of the parent subproject POM file or directory within the checkout.
+            If not specified, it defaults to {@code ..}, i.e. the parent directory.
+            Maven looks for the parent POM first in this location on
+            the filesystem if explicitly provided, then in the reactor if groupId and artifactId are provided,
+            then in the default parent directory, then the local repository, and lastly in the remote repo.
+            However, if the both relative path and the group ID / artifact ID are provided,
+            they must match the file in the location given.
+            Specify either the {@code relativePath} or the {@code groupId}/{@code artifactId}, not both.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Developer">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Information about one of the committers on this project.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The unique ID of the developer in the SCM.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="email" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The email address of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL for the homepage of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="organization" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The organization to which the contributor belongs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="organizationUrl" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="roles">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The roles the contributor plays in the project. Each role is described by a
+            {@code role} element, the body of which is a role name. This can also be used to
+            describe the contribution.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="role" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="timezone" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+              The timezone the contributor is in. Typically, this is a number in the range
+              &lt;a href=&quot;http://en.wikipedia.org/wiki/UTC%E2%88%9212:00&quot;&gt;-12&lt;/a&gt; to &lt;a href=&quot;http://en.wikipedia.org/wiki/UTC%2B14:00&quot;&gt;+14&lt;/a&gt;
+              or a valid time zone id like &quot;America/Montreal&quot; (UTC-05:00) or &quot;Europe/Paris&quot; (UTC+01:00).
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Properties about the contributor, such as an instant messenger handle.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="MailingList">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">This element describes all of the mailing lists associated with a project. The
+        auto-generated site references this information.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The name of the mailing list.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="subscribe" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to subscribe to
+            the mailing list.  If this is an email address, a
+            {@code mailto:} link will automatically be created
+            when the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="unsubscribe" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to unsubscribe to
+            the mailing list.  If this is an email address, a
+            {@code mailto:} link will automatically be created
+            when the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="post" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to post to
+            the mailing list.  If this is an email address, a
+            {@code mailto:} link will automatically be created
+            when the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="archive" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The link to a URL where you can browse the mailing list archive.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="otherArchives">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The link to alternate URLs where you can browse the list archive.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="otherArchive" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Contributor">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Description of a person who has contributed to the project, but who does not have
+        commit privileges. Usually, these contributions come in the form of patches submitted.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="email" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The email address of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL for the homepage of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="organization" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The organization to which the contributor belongs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="organizationUrl" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="roles">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The roles the contributor plays in the project. Each role is described by a
+            {@code role} element, the body of which is a role name. This can also be used to
+            describe the contribution.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="role" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="timezone" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+              The timezone the contributor is in. Typically, this is a number in the range
+              &lt;a href=&quot;http://en.wikipedia.org/wiki/UTC%E2%88%9212:00&quot;&gt;-12&lt;/a&gt; to &lt;a href=&quot;http://en.wikipedia.org/wiki/UTC%2B14:00&quot;&gt;+14&lt;/a&gt;
+              or a valid time zone id like &quot;America/Montreal&quot; (UTC-05:00) or &quot;Europe/Paris&quot; (UTC+01:00).
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Properties about the contributor, such as an instant messenger handle.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Organization">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Specifies the organization that produces this project.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL to the organization&apos;s home page.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DistributionManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">This elements describes all that pertains to distribution for a project. It is
+        primarily used for deployment of artifacts and the site produced by the build.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="repository" type="DeploymentRepository">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Information needed to deploy the artifacts generated by the project to a
+            remote repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshotRepository" type="DeploymentRepository">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Where to deploy snapshots of artifacts to. If not given, it defaults to the
+            {@code repository} element.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="site" type="Site">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Information needed for deploying the web site of the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="downloadUrl" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The URL of the project&apos;s download page. If not given users will be
+            referred to the homepage given by {@code url}.
+            This is given to assist in locating artifacts that are not in the repository due to
+            licensing restrictions.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="relocation" type="Relocation">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Relocation information of the artifact if it has been moved to a new group ID
+            and/or artifact ID.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="status" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Gives the status of this artifact in the remote repository.
+            This must not be set in your local project, as it is updated by
+            tools placing it in the repository. Valid values are: {@code none} (default),
+            {@code converted} (repository manager converted this from a Maven 1 POM),
+            {@code partner}
+            (directly synced from a partner Maven 2 repository), {@code deployed} (was deployed from a Maven 2
+            instance), {@code verified} (has been hand verified as correct and final).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DeploymentRepository">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Deployment repository contains the information needed for deploying to the remote
+        repository, which adds uniqueVersion property to usual repositories for download.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="uniqueVersion" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to assign snapshots a unique version comprised of the timestamp and
+            build number, or to use the same version each time</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="releases" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of releases from this repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshots" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of snapshots from this repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            A unique identifier for a repository. This is used to match the repository
+            to configuration in the {@code settings.xml} file, for example. Furthermore, the identifier is
+            used during POM inheritance and profile injection to detect repositories that should be merged.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Human readable name of the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The url of the repository, in the form {@code protocol://hostname/path}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="layout" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The type of layout this repository uses for locating and storing artifacts -
+            can be {@code legacy} or {@code default}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="RepositoryPolicy">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Download policy.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="enabled" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether to use this repository for downloading this type of artifact. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code true}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="updatePolicy" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The frequency for downloading updates - can be
+            {@code always},
+            {@code daily} (default),
+            {@code interval:XXX} (in minutes) or
+            {@code never} (only if it doesn&apos;t exist locally).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="checksumPolicy" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            What to do when verification of an artifact checksum fails. Valid values are
+            {@code ignore},
+            {@code fail} (default for Maven 4 and above) or
+            {@code warn} (default for Maven 3).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Relocation">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Describes where an artifact has moved to. If any of the values are omitted, it is
+        assumed to be the same as it was before.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID the artifact has moved to.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The new artifact ID of the artifact.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The new version of the artifact.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="message" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">An additional message to show the user about the move, such as the reason.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Site">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Contains the information needed for deploying websites.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            A unique identifier for a deployment location. This is used to match the
+            site to configuration in the {@code settings.xml} file, for example.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Human readable name of the deployment location.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The url of the location where website is deployed, in the form {@code protocol://hostname/path}.
+            &lt;p&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + (artifactId or project.directory property), or just parent value if
+            site&apos;s {@code child.site.url.inherit.append.path=&quot;false&quot;}.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="child.site.url.inherit.append.path" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">4.0.0+</xs:documentation>
+        <xs:documentation source="description">
+            
+            When children inherit from distribution management site url, append path or not? Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}
+            &lt;p&gt;&lt;b&gt;Default value is&lt;/b&gt;: {@code true}&lt;/p&gt;
+            @since Maven 3.6.1
+            
+          </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="Reporting">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Section for management of reports and their configuration.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="excludeDefaults" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            If true, then the default reports are not included in the site generation.
+            This includes the reports in the &quot;Project Info&quot; menu. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code false}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="outputDirectory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Where to store all the generated reports. The default is
+            {@code ${project.build.directory}/site}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The reporting plugins to use and their configuration.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="ReportPlugin" name="plugin" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ReportPlugin">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The {@code &lt;plugin&gt;} element in {@code &lt;reporting&gt;&lt;plugins&gt;} contains information required for a report plugin.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string" default="org.apache.maven.plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID of the reporting plugin in the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact ID of the reporting plugin in the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The version of the reporting plugin to be used. Starting with Maven 3, if no version is defined explicitly,
+            version is searched in {@code build/plugins} then in {@code build/pluginManagement}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="reportSets">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Multiple specifications of a set of reports, each having (possibly) different
+            configuration. This is the reporting parallel to an {@code execution} in the build.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="ReportSet" name="reportSet" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="inherited" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether any configuration should be propagated to child POMs. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code true}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;p&gt;The configuration as DOM object.&lt;/p&gt;
+            &lt;p&gt;By default, every element content is trimmed, but starting with Maven 3.1.0, you can add
+            {@code xml:space=&quot;preserve&quot;} to elements you want to preserve whitespace.&lt;/p&gt;
+            &lt;p&gt;You can control how child POMs inherit configuration from parent POMs by adding {@code combine.children}
+            or {@code combine.self} attributes to the children of the configuration element:&lt;/p&gt;
+            &lt;ul&gt;
+            &lt;li&gt;{@code combine.children}: available values are {@code merge} (default) and {@code append},&lt;/li&gt;
+            &lt;li&gt;{@code combine.self}: available values are {@code merge} (default) and {@code override}.&lt;/li&gt;
+            &lt;/ul&gt;
+
+            @see &lt;a href=&quot;https://maven.apache.org/pom.html#Plugins&quot;&gt;POM Reference documentation&lt;/a&gt;
+            @see &lt;a href=&quot;https://codehaus-plexus.github.io/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3DomUtils.html&quot;&gt;Xpp3DomUtils&lt;/a&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ReportSet">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Represents a set of reports and configuration to be used to generate them.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">The unique id for this report set, to be used during POM inheritance and profile injection
+            for merging of report sets.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="reports">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of reports from this plugin which should be generated from this set.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="report" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="inherited" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether any configuration should be propagated to child POMs. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code true}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;p&gt;The configuration as DOM object.&lt;/p&gt;
+            &lt;p&gt;By default, every element content is trimmed, but starting with Maven 3.1.0, you can add
+            {@code xml:space=&quot;preserve&quot;} to elements you want to preserve whitespace.&lt;/p&gt;
+            &lt;p&gt;You can control how child POMs inherit configuration from parent POMs by adding {@code combine.children}
+            or {@code combine.self} attributes to the children of the configuration element:&lt;/p&gt;
+            &lt;ul&gt;
+            &lt;li&gt;{@code combine.children}: available values are {@code merge} (default) and {@code append},&lt;/li&gt;
+            &lt;li&gt;{@code combine.self}: available values are {@code merge} (default) and {@code override}.&lt;/li&gt;
+            &lt;/ul&gt;
+
+            @see &lt;a href=&quot;https://maven.apache.org/pom.html#Plugins&quot;&gt;POM Reference documentation&lt;/a&gt;
+            @see &lt;a href=&quot;https://codehaus-plexus.github.io/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3DomUtils.html&quot;&gt;Xpp3DomUtils&lt;/a&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Profile">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Modifications to the build process which is activated based on environmental
+        parameters or command line arguments.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The identifier of this build profile. This is used for command line
+            activation, and identifies profiles to be merged.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="activation" type="Activation">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The conditional logic which will automatically trigger the inclusion of this
+            profile.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="build" type="BuildBase">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Information required to build the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="modules">
+        <xs:annotation>
+          <xs:documentation source="version">[4.0.0 =&gt; 4.1.0]</xs:documentation>
+          <xs:documentation source="description">
+            @deprecated Use {@link #subprojects} instead.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="module" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="subprojects">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0</xs:documentation>
+          <xs:documentation source="description">The subprojects (formerly called modules) to build as a part of this
+            project. Each subproject listed is a relative path to the directory containing the subproject.
+            To be consistent with the way default URLs are calculated from parent, it is recommended
+            to have subproject names match artifact ids.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="subproject" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="distributionManagement" type="DistributionManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Distribution information for a project that enables deployment of the site
+            and artifacts to remote web servers and repositories respectively.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Properties that can be used throughout the POM as a substitution, and
+            are used as filters in resources if enabled.
+            The format is {@code &lt;name&gt;value&lt;/name&gt;}.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencyManagement" type="DependencyManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Default dependency information for projects that inherit from this one. The
+            dependencies in this section are not immediately resolved. Instead, when a POM derived
+            from this one declares a dependency described by a matching groupId and artifactId, the
+            version and other values from this section are used for that dependency if they were not
+            already specified.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencies">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all the dependencies associated with a project.
+            These dependencies are used to construct a classpath for your
+            project during the build process. They are automatically downloaded from the
+            repositories defined in this project.
+
+            @see &lt;a href=&quot;https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html&quot;&gt;Dependency mechanism&lt;/a&gt;
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Dependency" name="dependency" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="repositories">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering dependencies and
+            extensions.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Repository" name="repository" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginRepositories">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering plugins for builds and
+            reports.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Repository" name="pluginRepository" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="reporting" type="Reporting">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element includes the specification of report plugins to use
+            to generate the reports on the Maven-generated site.
+            These reports will be run when a user executes {@code mvn site}.
+            All the reports will be included in the navigation bar for browsing.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Activation">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+            The conditions within the build runtime environment which will trigger the
+            automatic inclusion of the build profile. Multiple conditions can be defined, which must
+            be all satisfied to activate the profile.
+
+            &lt;p&gt;In addition to the traditional activation mechanisms (JDK version, OS properties,
+            file existence, etc.), Maven now supports a powerful condition-based activation
+            through the {@code condition} field. This new mechanism allows for more flexible
+            and expressive profile activation rules.&lt;/p&gt;
+
+            &lt;h2&gt;Condition Syntax&lt;/h2&gt;
+
+            &lt;p&gt;The condition is specified as a string expression that can include various
+            functions, comparisons, and logical operators. Some key features include:&lt;/p&gt;
+
+            &lt;ul&gt;
+            &lt;li&gt;Property access: {@code ${property.name}}&lt;/li&gt;
+            &lt;li&gt;Comparison operators: {@code ==}, {@code !=}, {@code &lt;}, {@code &gt;}, {@code &lt;=}, {@code &gt;=}&lt;/li&gt;
+            &lt;li&gt;Logical operators: {@code &amp;&amp;} (AND), {@code ||} (OR), {@code not(...)}&lt;/li&gt;
+            &lt;li&gt;Functions: {@code exists(...)}, {@code missing(...)}, {@code matches(...)}, {@code inrange(...)}, and more&lt;/li&gt;
+            &lt;/ul&gt;
+
+            &lt;h2&gt;Supported Functions&lt;/h2&gt;
+
+            &lt;p&gt;The following functions are supported in condition expressions:&lt;/p&gt;
+
+            &lt;ul&gt;
+            &lt;li&gt;{@code length(string)}: Returns the length of the given string.&lt;/li&gt;
+            &lt;li&gt;{@code upper(string)}: Converts the string to uppercase.&lt;/li&gt;
+            &lt;li&gt;{@code lower(string)}: Converts the string to lowercase.&lt;/li&gt;
+            &lt;li&gt;{@code substring(string, start, [end])}: Returns a substring of the given string.&lt;/li&gt;
+            &lt;li&gt;{@code indexOf(string, substring)}: Returns the index of the first occurrence of substring in string, or -1 if not found.&lt;/li&gt;
+            &lt;li&gt;{@code contains(string, substring)}: Checks if the string contains the substring.&lt;/li&gt;
+            &lt;li&gt;{@code matches(string, regex)}: Checks if the string matches the given regular expression.&lt;/li&gt;
+            &lt;li&gt;{@code not(condition)}: Negates the given condition.&lt;/li&gt;
+            &lt;li&gt;{@code if(condition, trueValue, falseValue)}: Returns trueValue if the condition is true, falseValue otherwise.&lt;/li&gt;
+            &lt;li&gt;{@code exists(path)}: Checks if a file matching the given glob pattern exists.&lt;/li&gt;
+            &lt;li&gt;{@code missing(path)}: Checks if a file matching the given glob pattern does not exist.&lt;/li&gt;
+            &lt;li&gt;{@code inrange(version, range)}: Checks if the given version is within the specified version range.&lt;/li&gt;
+            &lt;/ul&gt;
+
+            &lt;h2&gt;Supported properties&lt;/h2&gt;
+
+            &lt;p&gt;The following properties are supported in expressions:&lt;/p&gt;
+
+            &lt;ul&gt;
+            &lt;li&gt;`project.basedir`: The project directory&lt;/li&gt;
+            &lt;li&gt;`project.rootDirectory`: The root directory of the project&lt;/li&gt;
+            &lt;li&gt;`project.artifactId`: The artifactId of the project&lt;/li&gt;
+            &lt;li&gt;`project.packaging`: The packaging of the project&lt;/li&gt;
+            &lt;li&gt;user properties&lt;/li&gt;
+            &lt;li&gt;system properties (including environment variables prefixed with `env.`)&lt;/li&gt;
+            &lt;/ul&gt;
+
+            &lt;h2&gt;Examples&lt;/h2&gt;
+
+            &lt;ul&gt;
+            &lt;li&gt;JDK version range: {@code inrange(${java.version}, &apos;[11,)&apos;)} (JDK 11 or higher)&lt;/li&gt;
+            &lt;li&gt;OS check: {@code ${os.name} == &apos;windows&apos;}&lt;/li&gt;
+            &lt;li&gt;File existence: {@code exists(&apos;${project.basedir}/src/**}{@code /*.xsd&apos;)}&lt;/li&gt;
+            &lt;li&gt;Property check: {@code ${my.property} != &apos;some-value&apos;}&lt;/li&gt;
+            &lt;li&gt;Regex matching: {@code matches(${os.version}, &apos;.*aws&apos;)}&lt;/li&gt;
+            &lt;li&gt;Complex condition: {@code ${os.name} == &apos;windows&apos; &amp;&amp; ${os.arch} != &apos;amd64&apos; &amp;&amp; inrange(${os.version}, &apos;[10,)&apos;)}&lt;/li&gt;
+            &lt;li&gt;String length check: {@code length(${user.name}) &gt; 5}&lt;/li&gt;
+            &lt;li&gt;Substring with version: {@code substring(${java.version}, 0, 3) == &apos;1.8&apos;}&lt;/li&gt;
+            &lt;li&gt;Using indexOf: {@code indexOf(${java.version}, &apos;-&apos;) &gt; 0}&lt;/li&gt;
+            &lt;li&gt;Conditional logic: {@code if(contains(${java.version}, &apos;-&apos;), substring(${java.version}, 0, indexOf(${java.version}, &apos;-&apos;)), ${java.version})}&lt;/li&gt;
+            &lt;/ul&gt;
+
+            &lt;p&gt;This flexible condition mechanism allows for more precise control over profile
+            activation, enabling developers to create profiles that respond to a wide range of
+            environmental factors and project states.&lt;/p&gt;
+       </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="activeByDefault" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">If set to true, this profile will be active unless another profile in this
+            pom is activated using the command line -P option or by one of that profile&apos;s
+            activators.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="jdk" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated when a matching JDK is detected.
+            For example, {@code 1.4} only activates on JDKs versioned 1.4,
+            while {@code !1.4} matches any JDK that is not version 1.4. Ranges are supported too:
+            {@code [1.5,)} activates when the JDK is 1.5 minimum.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="os" type="ActivationOS">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Specifies that this profile will be activated when matching operating system
+            attributes are detected.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="property" type="ActivationProperty">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Specifies that this profile will be activated when this property is
+            specified.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="file" type="ActivationFile">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Specifies that this profile will be activated based on existence of a file.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="packaging" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">Specifies that this profile will be activated based on the project&apos;s packaging.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="condition" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">The condition which must be satisfied to activate the profile.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationProperty">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">This is the property specification used to activate a profile. If the value field
+        is empty, then the existence of the named property will activate the profile, otherwise it
+        does a case-sensitive match against the property value as well.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The name of the property to be used to activate a profile.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="value" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The value of the property required to activate a profile.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationFile">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">This is the file specification used to activate the profile. The {@code missing} value
+        is the location of a file that needs to exist, and if it doesn&apos;t, the profile will be
+        activated. On the other hand, {@code exists} will test for the existence of the file and if it is
+        there, the profile will be activated.
+        &lt;p&gt;Variable interpolation for these file specifications is limited to {@code ${project.basedir}},
+        system properties and user properties.&lt;/p&gt;</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="missing" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The name of the file that must be missing to activate the profile. Please note, that missing and exists
+          fields cannot be used together. Only one of them should be used at any one time.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="exists" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The name of the file that must exist to activate the profile. Please note, that missing and exists
+          fields cannot be used together. Only one of them should be used at any one time.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationOS">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">This is an activator which will detect an operating system&apos;s attributes in order
+        to activate its profile.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The name of the operating system to be used to activate the profile. This must be an exact match
+            of the {@code ${os.name}} Java property, such as {@code Windows XP}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="family" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The general family of the OS to be used to activate the profile, such as
+            {@code windows} or {@code unix}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="arch" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The architecture of the operating system to be used to activate the
+          profile.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The version of the operating system to be used to activate the
+          profile.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Repository">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">A repository contains the information needed for establishing connections with
+        remote repository.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="releases" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of releases from this repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshots" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of snapshots from this repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            A unique identifier for a repository. This is used to match the repository
+            to configuration in the {@code settings.xml} file, for example. Furthermore, the identifier is
+            used during POM inheritance and profile injection to detect repositories that should be merged.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Human readable name of the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The url of the repository, in the form {@code protocol://hostname/path}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="layout" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The type of layout this repository uses for locating and storing artifacts -
+            can be {@code legacy} or {@code default}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="BuildBase">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Build configuration in a profile.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="defaultGoal" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The default goal to execute when none is specified for
+            the project. Note that in case of a build with subprojects, only the default goal of the top-level
+            project is relevant, i.e. the default goals of subprojects are ignored. Since Maven 3,
+            multiple goals/phases can be separated by whitespace.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="resources">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all the classpath resources such as properties
+            files associated with a project. These resources are often included in the final
+            package.
+            The default value is {@code src/main/resources}.
+
+            @deprecated Replaced by {@code &lt;Source&gt;} with {@code main} scope and {@code resources} language.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Resource" name="resource" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="testResources">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all the classpath resources such as properties
+            files associated with a project&apos;s unit tests.
+            The default value is {@code src/test/resources}.
+
+            @deprecated Replaced by {@code &lt;Source&gt;} with {@code test} scope and {@code resources} language.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Resource" name="testResource" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="directory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The directory where all files generated by the build are placed.
+            The default value is {@code target}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="finalName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The filename (excluding the extension, and with no path information) that
+            the produced artifact will be called.
+            The default value is {@code ${artifactId}-${version}}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="filters">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of filter properties files that are used when filtering is enabled.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="filter" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginManagement" type="PluginManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Default plugin information to be made available for reference by projects
+            derived from this one. This plugin configuration will not be resolved or bound to the
+            lifecycle unless referenced. Any local configuration for a given plugin will override
+            the plugin&apos;s entire definition here.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of plugins to use.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Plugin" name="plugin" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Plugin">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;plugin&gt;} element contains information required for a plugin.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string" default="org.apache.maven.plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID of the plugin in the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact ID of the plugin in the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The version (or valid range of versions) of the plugin to be used.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="extensions" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether to load Maven extensions (such as packaging and type handlers) from
+            this plugin. For performance reasons, this should only be enabled when necessary. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code false}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="executions">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Multiple specifications of a set of goals to execute during the build
+            lifecycle, each having (possibly) a different configuration.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="PluginExecution" name="execution" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencies">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Additional dependencies that this project needs to introduce to the plugin&apos;s
+            classloader.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Dependency" name="dependency" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="inherited" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether any configuration should be propagated to child POMs. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code true}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;p&gt;The configuration as DOM object.&lt;/p&gt;
+            &lt;p&gt;By default, every element content is trimmed, but starting with Maven 3.1.0, you can add
+            {@code xml:space=&quot;preserve&quot;} to elements you want to preserve whitespace.&lt;/p&gt;
+            &lt;p&gt;You can control how child POMs inherit configuration from parent POMs by adding {@code combine.children}
+            or {@code combine.self} attributes to the children of the configuration element:&lt;/p&gt;
+            &lt;ul&gt;
+            &lt;li&gt;{@code combine.children}: available values are {@code merge} (default) and {@code append},&lt;/li&gt;
+            &lt;li&gt;{@code combine.self}: available values are {@code merge} (default) and {@code override}.&lt;/li&gt;
+            &lt;/ul&gt;
+
+            @see &lt;a href=&quot;https://maven.apache.org/pom.html#Plugins&quot;&gt;POM Reference documentation&lt;/a&gt;
+            @see &lt;a href=&quot;https://codehaus-plexus.github.io/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3DomUtils.html&quot;&gt;Xpp3DomUtils&lt;/a&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PluginExecution">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code @lt;execution&gt;} element contains information required for the
+        execution of a plugin.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The identifier of this execution for labelling the goals during the build,
+            and for matching executions to merge during inheritance and profile injection.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="phase" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The build lifecycle phase to bind the goals in this execution to. If omitted,
+            the goals will be bound to the default phase specified by the plugin. </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="goals">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The goals to execute with the given configuration.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="goal" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="inherited" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether any configuration should be propagated to child POMs. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code true}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;p&gt;The configuration as DOM object.&lt;/p&gt;
+            &lt;p&gt;By default, every element content is trimmed, but starting with Maven 3.1.0, you can add
+            {@code xml:space=&quot;preserve&quot;} to elements you want to preserve whitespace.&lt;/p&gt;
+            &lt;p&gt;You can control how child POMs inherit configuration from parent POMs by adding {@code combine.children}
+            or {@code combine.self} attributes to the children of the configuration element:&lt;/p&gt;
+            &lt;ul&gt;
+            &lt;li&gt;{@code combine.children}: available values are {@code merge} (default) and {@code append},&lt;/li&gt;
+            &lt;li&gt;{@code combine.self}: available values are {@code merge} (default) and {@code override}.&lt;/li&gt;
+            &lt;/ul&gt;
+
+            @see &lt;a href=&quot;https://maven.apache.org/pom.html#Plugins&quot;&gt;POM Reference documentation&lt;/a&gt;
+            @see &lt;a href=&quot;https://codehaus-plexus.github.io/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3DomUtils.html&quot;&gt;Xpp3DomUtils&lt;/a&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Resource">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">This element describes all of the classpath resources associated with a project
+        or unit tests.
+
+        @deprecated Replaced by {@code &lt;Source&gt;} with {@code resources} language.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="targetPath" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describe the resource target path. The path is relative to the target/classes
+            directory (i.e. {@code ${project.build.outputDirectory}}).
+            For example, if you want that resource to appear in a specific package
+            ({@code org.apache.maven.messages}), you must specify this
+            element with this value: {@code org/apache/maven/messages}.
+            This is not required if you simply put the resources in that directory
+            structure at the source, however.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="filtering" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether resources are filtered to replace tokens with parameterised values or not.
+            The values are taken from the {@code properties} element and from the
+            properties in the files listed in the {@code filters} element. Note: While the type
+            of this field is {@code String} for technical reasons, the semantic type is actually
+            {@code Boolean}. Default value is {@code false}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="directory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Describe the directory where the resources are stored. The path is relative
+            to the POM.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="includes">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            A list of patterns to include, e.g. {@code **&amp;#47;*.xml}.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="include" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="excludes">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            A list of patterns to exclude, e.g. {@code **&amp;#47;*.xml}
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="exclude" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PluginManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Section for management of default plugin information for use in a group of POMs.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of plugins to use.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Plugin" name="plugin" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Prerequisites">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Describes the prerequisites a project can have.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="maven" type="xs:string" default="2.0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            For a plugin project (packaging is {@code maven-plugin}), the minimum version of
+            Maven required to use the resulting plugin.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Build">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;build&gt;} element contains information required to build the project.
+        Default values are defined in Super POM.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="sources">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            All the sources to compile and resources files to copy for a project or it&apos;s unit tests.
+            The sources can be Java source files, generated source files, scripts, or resources for examples.
+            Each source is specified by a {@code directory} element, which is relative to the POM.
+            The kind of sources (source files to compile or resources to copy) and their usage (for the main code
+            or for the tests) is specified by the {@code scope} element together with each source directory.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Source" name="source" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="sourceDirectory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies a directory containing the source of the project. The
+            generated build system will compile the sources from this directory when the project is
+            built. The path given is relative to the project descriptor.
+            The default value is {@code src/main/java}.
+
+            @deprecated Replaced by {@code &lt;Source&gt;} with {@code main} scope.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="scriptSourceDirectory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies a directory containing the script sources of the
+            project. This directory is meant to be different from the sourceDirectory, in that its
+            contents will be copied to the output directory in most cases (since scripts are
+            interpreted rather than compiled).
+            The default value is {@code src/main/scripts}.
+
+            @deprecated Replaced by {@code &lt;Source&gt;} with {@code script} language.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="testSourceDirectory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies a directory containing the unit test source of the
+            project. The generated build system will compile these directories when the project is
+            being tested. The path given is relative to the project descriptor.
+            The default value is {@code src/test/java}.
+
+            @deprecated Replaced by {@code &lt;Source&gt;} with {@code test} scope.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="outputDirectory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The directory where compiled application classes are placed.
+            The default value is {@code target/classes}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="testOutputDirectory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The directory where compiled test classes are placed.
+            The default value is {@code target/test-classes}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="extensions">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">A set of build extensions to use from this project.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Extension" name="extension" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="defaultGoal" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The default goal to execute when none is specified for
+            the project. Note that in case of a build with subprojects, only the default goal of the top-level
+            project is relevant, i.e. the default goals of subprojects are ignored. Since Maven 3,
+            multiple goals/phases can be separated by whitespace.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="resources">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all the classpath resources such as properties
+            files associated with a project. These resources are often included in the final
+            package.
+            The default value is {@code src/main/resources}.
+
+            @deprecated Replaced by {@code &lt;Source&gt;} with {@code main} scope and {@code resources} language.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Resource" name="resource" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="testResources">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all the classpath resources such as properties
+            files associated with a project&apos;s unit tests.
+            The default value is {@code src/test/resources}.
+
+            @deprecated Replaced by {@code &lt;Source&gt;} with {@code test} scope and {@code resources} language.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Resource" name="testResource" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="directory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The directory where all files generated by the build are placed.
+            The default value is {@code target}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="finalName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The filename (excluding the extension, and with no path information) that
+            the produced artifact will be called.
+            The default value is {@code ${artifactId}-${version}}.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="filters">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of filter properties files that are used when filtering is enabled.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="filter" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginManagement" type="PluginManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Default plugin information to be made available for reference by projects
+            derived from this one. This plugin configuration will not be resolved or bound to the
+            lifecycle unless referenced. Any local configuration for a given plugin will override
+            the plugin&apos;s entire definition here.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of plugins to use.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Plugin" name="plugin" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Source">
+    <xs:annotation>
+      <xs:documentation source="version">4.1.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        Description of the sources associated with a project main code or unit tests.
+        The sources can be Java source files, generated source files, scripts, or resources for examples.
+        A source is specified by a {@code directory} element, which is relative to the POM.
+        The directory content can optionally be reduced to a subset with the {@code includes} and
+        {@code excludes} elements. The kind of sources (codes, resources, &lt;i&gt;etc.&lt;/i&gt;) and their
+        usage (main code, tests, &lt;i&gt;etc.&lt;/i&gt;) is specified by the {@code scope} element.
+
+        &lt;h2&gt;Default source directories&lt;/h2&gt;
+        If no source directories are specified, the default values depend on whether module names are specified:
+        &lt;ul&gt;
+          &lt;li&gt;{@code src/${scope}/${lang}} if no module is specified&lt;/li&gt;
+          &lt;li&gt;{@code src/${module}/${scope}/${lang}} if a module is specified&lt;/li&gt;
+        &lt;/ul&gt;
+        where
+        {@code ${scope}} is the value of the {@link #scope} element (typically {@code main} or {@code test}),
+        {@code ${lang}} is the value of the {@link #lang} element (typically {@code java} or {@code resources}),
+        and {@code ${module}} is the optional {@link #module} element.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="scope" type="xs:string" default="main">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Specifies in which context the source files will be used - typically {@code main} or {@code test}.
+
+            &lt;p&gt;The &lt;b&gt;main&lt;/b&gt; scope is used for specifying a directory containing the source of the project.
+            The generated build system will compile the sources from this directory when the project is built.
+            The path given in the {@code directory} field is relative to the project descriptor.
+            The default directory for the default language (Java) is {@code &quot;src/main/java&quot;}.&lt;/p&gt;
+
+            &lt;p&gt;The &lt;b&gt;test&lt;/b&gt; scope is used for specifying a directory containing the unit test source of the project.
+            The generated build system will compile these directories when the project is being tested.
+            The path given in the {@code directory} field is relative to the project descriptor.
+            The default directory for the default language (Java) is {@code &quot;src/test/java&quot;}.&lt;/p&gt;
+
+            &lt;p&gt;If no scope is specified, the default is {@code main}.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="lang" type="xs:string" default="java">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Specifies the language of the source files - typically {@code java} or {@code resources}.
+            Resources is used as a generic term for scripting languages (e.g., JavaScript or Python)
+            or markup languages (e.g. properties file, &lt;abbr&gt;JSON&lt;/abbr&gt; or &lt;abbr&gt;XML&lt;/abbr&gt;).
+
+            &lt;p&gt;The &lt;b&gt;java&lt;/b&gt; language is used for specifying a directory containing the Java sources of the project.
+            The generated build system will compile the sources from this directory using the Java compiler when the
+            project is built. The path given in the {@code directory} field is relative to the project descriptor.
+            The default directory for the main Java sources is {@code &quot;src/main/java&quot;}.&lt;/p&gt;
+
+            &lt;p&gt;The &lt;b&gt;resources&lt;/b&gt; language is used for specifying a directory containing the class-path
+            or module-path resources such as properties files or scripts associated with a project.
+            This directory is meant to be different from the main source directory,
+            in that its contents will be copied to the output directory in most cases
+            (since scripts are interpreted rather than compiled).
+            The default directory for the main resources is {@code &quot;src/main/resources&quot;}.&lt;/p&gt;
+
+            &lt;p&gt;If no language is specified, the default is {@code java}.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="module" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Name of the Java module (or other language-specific module) which is built by the sources.
+            This element can be specified in a Maven project containing multiple Java modules.
+            It is generally not needed for non-modular projects, or for modular projects having only one module.
+
+            &lt;p&gt;If a module name is specified for resources or script files,
+            then this value modifies the directory where the files will be copied.
+            For example, if a Java module name is &quot;foo.biz&quot;, then the {@code foo/bar.properties}
+            resource file will be copied as {@code foo.biz/foo/bar.properties}.&lt;/p&gt;
+
+            &lt;p&gt;This element can be combined with the {@code targetVersion} element for specifying sources,
+            scripts, or resources that are specific to both a particular module and a target version.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="targetVersion" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The version of the platform where the code will be executed.
+            In a Java environment, this is the value of the {@code --release} compiler option.
+            If a Java project contains multiple main sources with different target versions,
+            then a multi-version &lt;abbr&gt;JAR&lt;/abbr&gt; file will be created
+            with the lowest version taken as the &lt;dfn&gt;base version&lt;/dfn&gt;.
+            If this element is omitted, then the default target version is the compiler default value,
+            which is usually the version of the Java environment running Maven.
+
+            &lt;p&gt;If a target version, different from the base version, is specified for resources or script files,
+            then this value modifies the directory where the files will be copied.
+            For example, if {@code targetVersion} is 17, then the {@code foo/bar.properties}
+            resource file will be copied as {@code META-INF/versions/17/foo/bar.properties}.&lt;/p&gt;
+
+            &lt;p&gt;This element can be combined with the {@code module} element for specifying sources,
+            scripts, or resources that are specific to both a particular module and a target version.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="targetPath" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Specifies an explicit target path, overriding the default value.
+            The path is relative to the {@code ${project.build.outputDirectory}} directory,
+            which is typically {@code target/classes} in a Java project.
+
+            &lt;p&gt;When a target path is explicitly specified, the values of the {@code module} and {@code targetVersion}
+            elements are not used for inferring the path (they are still used as compiler options however).
+            It means that for scripts and resources, the files below the path specified by {@code directory}
+            are copied to the path specified by {@code targetPath} with the exact same directory structure.
+            It is user&apos;s responsibility to put module and version components in the {@code targetPath} if needed.&lt;/p&gt;
+
+            &lt;p&gt;Note that for Java source files, a directory with the module name may still be generated despite
+            above statement about {@code module} being ignored, because that directory is generated by the Java
+            compiler rather than Maven.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="stringFiltering" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Whether resources are filtered to replace tokens with parameterized values.
+            The values are taken from the {@code properties} element and from the properties
+            in the files listed in the {@code filters} element.
+
+            &lt;p&gt;The default value is {@code false}.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="enabled" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Whether the directory described by this source element should be included in the build.
+            This flag provides an easy way to include or exclude some sources depending, for example,
+            o property values defined in profiles. A use case is including optional resources only
+            when the user confirmed a license agreement.
+
+            &lt;p&gt;The default value is {@code true}.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="directory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Describe the directory where the resources are stored. The path is relative
+            to the POM.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="includes">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            A list of patterns to include, e.g. {@code **&amp;#47;*.xml}.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="include" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="excludes">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            A list of patterns to exclude, e.g. {@code **&amp;#47;*.xml}
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="exclude" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Extension">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Describes a build extension to utilise.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID of the extension&apos;s artifact.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact ID of the extension.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The version of the extension.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">4.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            The configuration of the extension.
+            @since Maven 4.0.0
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/plugin-2.0.0-rc-4.xsd b/content/resources/xsd/plugin-2.0.0-rc-4.xsd
new file mode 100644
index 00000000..5fd6efd9
--- /dev/null
+++ b/content/resources/xsd/plugin-2.0.0-rc-4.xsd
@@ -0,0 +1,413 @@
+<?xml version="1.0"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one             -->
+<!-- or more contributor license agreements. See the NOTICE file            -->
+<!-- distributed with this work for additional information                  -->
+<!-- regarding copyright ownership. The ASF licenses this file              -->
+<!-- to you under the Apache License, Version 2.0 (the                      -->
+<!-- "License"); you may not use this file except in compliance             -->
+<!-- with the License. You may obtain a copy of the License at              -->
+<!--                                                                        -->
+<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
+<!--                                                                        -->
+<!-- Unless required by applicable law or agreed to in writing,             -->
+<!-- software distributed under the License is distributed on an            -->
+<!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY                 -->
+<!-- KIND, either express or implied. See the License for the               -->
+<!-- specific language governing permissions and limitations                -->
+<!-- under the License.                                                     -->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.4.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/PLUGIN/2.0.0" targetNamespace="http://maven.apache.org/PLUGIN/2.0.0">
+  <xs:element name="plugin" type="PluginDescriptor">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Root element of the {@code plugin.xml} file.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="PluginDescriptor">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Root element of the {@code plugin.xml} file.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Name of the plugin.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="description" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Description of the plugin.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The group id of the plugin.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact id of the plugin.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The version of the plugin.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="goalPrefix" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description"></xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="isolatedRealm" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description"></xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="inheritedByDefault" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description"></xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="requiredJavaVersion" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            A version range which specifies the supported Java versions. A version range can either use the usual mathematical syntax &quot;[2.0.10,2.1.0),[3.0,)&quot; or use a single version &quot;2.2.1&quot;. The latter is a short form for &quot;[2.2.1,)&quot;, i.e. denotes the minimum version required.
+            @since Maven 4.0.0-alpha-3
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="requiredMavenVersion" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            A version range which specifies the supported Maven versions. A version range can either use the usual mathematical syntax &quot;[2.0.10,2.1.0),[3.0,)&quot; or use a single version &quot;2.2.1&quot;. The latter is a short form for &quot;[2.2.1,)&quot;, i.e. denotes the minimum version required. This value takes precedence over the POMs Maven prerequisite.
+            @since Maven 4.0.0-alpha-3
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="mojos">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Description of each Mojo provided by the plugin.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="MojoDescriptor" name="mojo" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="MojoDescriptor">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">A Mojo description.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="goal" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The goal name for the Mojo, that users will reference from the command line to execute the Mojo directly,
+            or inside a POM in order to provide Mojo-specific configuration.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="description" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The description of this Mojo&apos;s functionality.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="implementation" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The Mojo&apos;s fully-qualified class name (or script path in the case of non-Java Mojos).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="language" type="xs:string" default="java">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The implementation language for this Mojo (java, beanshell, etc.).</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="phase" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Defines a default phase to bind a Mojo execution to if the user does not explicitly set a phase in the POM.
+            &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will not automagically make a Mojo run when the plugin declaration is added
+            to the POM. It merely enables the user to omit the {@code &lt;phase&gt;} element from the
+            surrounding {@code &lt;execution&gt;} element.&lt;/p&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="executePhase" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Reference the invocation phase of the Mojo.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="executeGoal" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Reference the invocation goal of the Mojo.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="executeLifecycle" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description"></xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencyResolution" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Flags this Mojo as requiring the dependencies in the specified class path to be resolved before it can
+            execute: {@code compile}, {@code runtime}, {@code test},
+            {@code compile+runtime} (since Maven 3.0) or {@code runtime+system} (since Maven 3.0)
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencyCollection" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Flags this Mojo as requiring information about the dependencies that would make up the specified class
+            path. As the name suggests, this is similar to requiresDependencyResolution and supports the same values.
+            The important difference is this will not resolve the files for the dependencies, i.e. the artifacts
+            associated with a Maven project can lack a file. As such, this annotation is meant for Mojos that only
+            want to analyze the set of transitive dependencies, in particular during early lifecycle phases where
+            full dependency resolution might fail due to projects which haven&apos;t been built yet.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="directInvocationOnly" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">Flags this Mojo to be invoked directly only.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="projectRequired" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">Flags this Mojo to require running inside of a project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="onlineRequired" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">Flags this Mojo to require online mode for its operation.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="aggregator" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Flags this Mojo to run it in a multi-module way, i.e. aggregate the build with the set of projects
+            listed as modules.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="inheritedByDefault" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify that the Mojo is inherited.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="since" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify the version when the Mojo was added to the API. Similar to Javadoc since.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="deprecated" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Description with the reason of Mojo deprecation. Similar to Javadoc {@code @deprecated}
+            This will trigger a warning when a user tries to use a Mojo marked as deprecated.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configurator" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The configurator type to use when injecting parameter values into this Mojo. The value is normally deduced
+            from the Mojo&apos;s implementation language, but can be specified to allow a custom ComponentConfigurator
+            implementation to be used.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="parameters">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description"></xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Parameter" name="parameter" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="resolutions">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description"></xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Resolution" name="resolution" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">the id of the mojo, based on the goal name</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="fullGoalName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">the full goal name</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Parameter">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">A parameter description.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The name of the parameter, to be used while configuring this parameter from the Mojo&apos;s declared defaults
+            or from the POM.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="alias" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Specifies an alias which can be used to configure this parameter from the POM.
+            This is primarily useful to improve user-friendliness, where Mojo field names are not intuitive to the
+            user or are otherwise not conducive to configuration via the POM.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="type" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The Java type for this parameter. This is used to validate the result of any expressions used to calculate
+            the value which should be injected into the Mojo for this parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="required" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether this parameter is required for the Mojo to function. This is used to validate the configuration
+            for a Mojo before it is injected, and before the Mojo is executed from some half-state.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="editable" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this parameter can be configured directly by the user (as in the case of POM-specified
+            configuration). This is useful when you want to force the user to use common POM elements rather than
+            plugin configurations, as in the case where you want to use the artifact&apos;s final name as a parameter. In
+            this case, you want the user to modify {@code &lt;build&gt;&lt;finalName/&gt;&lt;/build&gt;} rather
+            than specifying a value for finalName directly in the plugin configuration section. It is also useful to
+            ensure that - for example - a List-typed parameter which expects items of type Artifact doesn&apos;t get a List
+            full of Strings.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="description" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The description of this parameter&apos;s use inside the Mojo.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="since" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify the version when the parameter was added to the API. Similar to Javadoc since.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="deprecated" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Description with the reason of parameter deprecation. Similar to Javadoc {@code @deprecated}.
+            This will trigger a warning when a user tries to configure a parameter marked as deprecated.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="expression" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">Parameter expression, to let user override default value with a user property, system property or project property.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="defaultValue" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">The default value, as an expression that will be evaluated at injection or run-time.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Resolution">
+    <xs:annotation>
+      <xs:documentation source="version">2.0.0+</xs:documentation>
+      <xs:documentation source="description">Dependency collection or resolution injection.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="field" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">the name of the field to be injected</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="pathScope" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">pathScope used to flatten dependencies</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="requestType" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">either {@code collect}, {@code flatten}, or {@code resolve}</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/repository-metadata-1.2.0-rc-4.xsd b/content/resources/xsd/repository-metadata-1.2.0-rc-4.xsd
new file mode 100644
index 00000000..a5c9745d
--- /dev/null
+++ b/content/resources/xsd/repository-metadata-1.2.0-rc-4.xsd
@@ -0,0 +1,214 @@
+<?xml version="1.0"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one             -->
+<!-- or more contributor license agreements. See the NOTICE file            -->
+<!-- distributed with this work for additional information                  -->
+<!-- regarding copyright ownership. The ASF licenses this file              -->
+<!-- to you under the Apache License, Version 2.0 (the                      -->
+<!-- "License"); you may not use this file except in compliance             -->
+<!-- with the License. You may obtain a copy of the License at              -->
+<!--                                                                        -->
+<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
+<!--                                                                        -->
+<!-- Unless required by applicable law or agreed to in writing,             -->
+<!-- software distributed under the License is distributed on an            -->
+<!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY                 -->
+<!-- KIND, either express or implied. See the License for the               -->
+<!-- specific language governing permissions and limitations                -->
+<!-- under the License.                                                     -->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.4.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/METADATA/1.2.0" targetNamespace="http://maven.apache.org/METADATA/1.2.0">
+  <xs:element name="metadata" type="Metadata">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="Metadata">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The groupId when this directory represents &quot;groupId/artifactId&quot; or &quot;groupId/artifactId/version&quot;.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifactId when this directory represents &quot;groupId/artifactId&quot; or &quot;groupId/artifactId/version&quot;.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="versioning" type="Versioning">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Versioning information when this directory represents &quot;groupId/artifactId&quot; or &quot;groupId/artifactId/version&quot;.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The base version (i.e. ending in {@code -SNAPSHOT}) when this directory represents a &quot;groupId/artifactId/version&quot; for a SNAPSHOT.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The set of plugins when this directory represents a &quot;groupId&quot;.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Plugin" name="plugin" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="modelVersion" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">1.1.0+</xs:documentation>
+        <xs:documentation source="description">The version of the underlying metadata model.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="Plugin">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Mapping information for a single plugin within this group.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Display name for the plugin.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="prefix" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The plugin invocation prefix (i.e. eclipse for eclipse:eclipse)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The plugin artifactId</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Versioning">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Versioning information for &quot;groupId/artifactId&quot; or &quot;groupId/artifactId/version&quot; SNAPSHOT</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="latest" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">What the last version added to the directory is, including both releases and snapshots (&quot;groupId/artifactId&quot; directory only)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="release" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">What the last version added to the directory is, for the releases only (&quot;groupId/artifactId&quot; directory only)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="versions">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Versions available of the artifact (both releases and snapshots) (&quot;groupId/artifactId&quot; directory only)</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="version" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="lastUpdated" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">When the metadata was last updated (both &quot;groupId/artifactId&quot; and &quot;groupId/artifactId/version&quot; directories). The timestamp is expressed using UTC in the format yyyyMMddHHmmss.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshot" type="Snapshot">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The current snapshot data in use for this version (&quot;groupId/artifactId/version&quot; only)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshotVersions">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">Information for each sub-artifact available in this artifact snapshot. This is only the most recent SNAPSHOT for each unique extension/classifier combination.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="SnapshotVersion" name="snapshotVersion" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="SnapshotVersion">
+    <xs:annotation>
+      <xs:documentation source="version">1.1.0+</xs:documentation>
+      <xs:documentation source="description">Versioning information for a sub-artifact of the current snapshot artifact.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="classifier" type="xs:string" default="">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">The classifier of the sub-artifact. Each classifier and extension pair may only appear once.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="extension" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">The file extension of the sub-artifact. Each classifier and extension pair may only appear once.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="value" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">The resolved snapshot version of the sub-artifact.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="updated" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">The timestamp when this version information was last updated. The timestamp is expressed using UTC in the format yyyyMMddHHmmss.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Snapshot">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Snapshot data for the last artifact corresponding to the SNAPSHOT base version</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="timestamp" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The timestamp when this version was deployed. The timestamp is expressed using UTC in the format yyyyMMdd.HHmmss.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="buildNumber" type="xs:int" default="0">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The incremental build number</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="localCopy" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to use a local copy instead (with filename that includes the base version)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/settings-2.0.0-rc-4.xsd b/content/resources/xsd/settings-2.0.0-rc-4.xsd
new file mode 100644
index 00000000..a533b3cd
--- /dev/null
+++ b/content/resources/xsd/settings-2.0.0-rc-4.xsd
@@ -0,0 +1,739 @@
+<?xml version="1.0"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one             -->
+<!-- or more contributor license agreements. See the NOTICE file            -->
+<!-- distributed with this work for additional information                  -->
+<!-- regarding copyright ownership. The ASF licenses this file              -->
+<!-- to you under the Apache License, Version 2.0 (the                      -->
+<!-- "License"); you may not use this file except in compliance             -->
+<!-- with the License. You may obtain a copy of the License at              -->
+<!--                                                                        -->
+<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
+<!--                                                                        -->
+<!-- Unless required by applicable law or agreed to in writing,             -->
+<!-- software distributed under the License is distributed on an            -->
+<!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY                 -->
+<!-- KIND, either express or implied. See the License for the               -->
+<!-- specific language governing permissions and limitations                -->
+<!-- under the License.                                                     -->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.4.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/SETTINGS/2.0.0" targetNamespace="http://maven.apache.org/SETTINGS/2.0.0">
+  <xs:element name="settings" type="Settings">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Root element of the user configuration file.
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="Settings">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Root element of the user configuration file.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="localRepository" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The local repository.&lt;br&gt;&lt;b&gt;Default value is:&lt;/b&gt; {@code ${user.home}/.m2/repository}
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="interactiveMode" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether Maven should attempt to interact with the user for input.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="usePluginRegistry" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether Maven should use the {@code plugin-registry.xml} file to manage plugin versions.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="offline" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Indicate whether maven should operate in offline mode full-time.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="proxies">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Configuration for different proxy profiles. Multiple proxy profiles
+            might come in handy for anyone working from a notebook or other
+            mobile platform, to enable easy switching of entire proxy
+            configurations by simply specifying the profile id, again either from
+            the command line or from the defaults section below.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Proxy" name="proxy" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="servers">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Configuration of server-specific settings, mainly authentication
+            method. This allows configuration of authentication on a per-server
+            basis.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Server" name="server" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="mirrors">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Configuration of download mirrors for repositories.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Mirror" name="mirror" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="repositories">
+        <xs:annotation>
+          <xs:documentation source="version">1.3.0+</xs:documentation>
+          <xs:documentation source="description">
+            The lists of the remote repositories.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Repository" name="repository" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginRepositories">
+        <xs:annotation>
+          <xs:documentation source="version">1.3.0+</xs:documentation>
+          <xs:documentation source="description">
+            The lists of the remote repositories for discovering plugins.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Repository" name="pluginRepository" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="profiles">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Configuration of build profiles for adjusting the build
+            according to environmental parameters.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Profile" name="profile" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="activeProfiles">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            List of manually-activated build profiles, specified in the order in which
+            they should be applied.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="activeProfile" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginGroups">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            List of groupIds to search for a plugin when that plugin
+            groupId is not explicitly provided.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="xs:string" name="pluginGroup" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Proxy">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;proxy&gt;} element contains information required to a proxy settings.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="active" type="xs:string" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether this proxy configuration is the active one. Note: While the type of this field
+            is {@code String} for technical reasons, the semantic type is actually {@code boolean}.
+            @see #isActive()
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="protocol" type="xs:string" default="http">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The proxy protocol.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="username" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The proxy user.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="password" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The proxy password.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="port" type="xs:string" default="8080">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The proxy port. Note: While the type of this field is {@code String} for technical
+            reasons, the semantic type is actually {@code int}.
+            @see #getPort()
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="host" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The proxy host.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="nonProxyHosts" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The list of non-proxied hosts (delimited by {@code |}).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Item identifier.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Server">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;server&gt;} element contains information required to a server settings.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="username" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The username used to authenticate.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="password" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The password used in conjunction with the username to authenticate.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="privateKey" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The private key location used to authenticate.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="passphrase" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The passphrase used in conjunction with the privateKey to authenticate.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="filePermissions" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The permissions for files when they are created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="directoryPermissions" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The permissions for directories when they are created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Extra configuration for the transport layer.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Item identifier.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Mirror">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        A download mirror for a given repository.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="mirrorOf" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            A repository id or an expression matching one or many repository ids to mirror, e.g.,
+            &lt;code&gt;central&lt;/code&gt; or &lt;code&gt;*,!repo1&lt;/code&gt;.
+            &lt;code&gt;*&lt;/code&gt;, &lt;code&gt;external:*&lt;/code&gt; and &lt;code&gt;external:http:*&lt;/code&gt; (since Maven 3.8.0) have
+            a special meaning: see &lt;a href=&quot;/guides/mini/guide-mirror-settings.html&quot;&gt;Mirror Settings&lt;/a&gt; guide.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The optional name that describes the mirror.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL of the mirror repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="layout" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">The layout of the mirror repository.
+            @since Maven 3.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="mirrorOfLayouts" type="xs:string" default="default,legacy">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            The layouts of repositories being mirrored. This value can be used to restrict the usage
+            of the mirror to repositories with a matching layout (apart from a matching id).
+            @since Maven 3.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="blocked" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">1.2.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Whether this mirror should be blocked from any download request but fail the download process, explaining why.
+            &lt;br&gt;&lt;b&gt;Default value is&lt;/b&gt;: &lt;code&gt;false&lt;/code&gt;
+            &lt;br&gt;&lt;b&gt;Since&lt;/b&gt;: Maven 3.8.0
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Item identifier.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Repository">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Repository contains the information needed for establishing
+        connections with remote repository
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="releases" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            How to handle downloading of releases from this repository
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshots" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            How to handle downloading of snapshots from this repository
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Human readable name of the repository.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The url of the repository.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="layout" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The type of layout this repository uses for locating and
+            storing artifacts - can be &quot;legacy&quot; or &quot;default&quot;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Item identifier.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="RepositoryPolicy">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Download policy</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="enabled" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Whether to use this repository for downloading this type of
+            artifact.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="updatePolicy" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The frequency for downloading updates - can be &quot;always&quot;,
+            &quot;daily&quot; (default), &quot;interval:XXX&quot; (in minutes) or &quot;never&quot;
+            (only if it doesn&apos;t exist locally).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="checksumPolicy" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            What to do when verification of an artifact checksum fails. Valid values are &quot;fail&quot; (default for Maven 4 and
+            above), &quot;warn&quot; (default for Maven 3) or &quot;ignore&quot;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Profile">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Modifications to the build process which is keyed on some sort of environmental parameter.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="activation" type="Activation">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The conditional logic which will automatically trigger the inclusion of this profile.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Extended configuration specific to this profile goes here.
+            Contents take the form of {@code &lt;property.name&gt;property.value&lt;/property.name&gt;}
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="repositories">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The lists of the remote repositories.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Repository" name="repository" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginRepositories">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The lists of the remote repositories for discovering plugins.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element type="Repository" name="pluginRepository" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">Item identifier.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Activation">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The conditions within the build runtime environment which will trigger
+        the automatic inclusion of the parent build profile.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="activeByDefault" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Flag specifying whether this profile is active as a default.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="jdk" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated when a matching JDK is detected.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="os" type="ActivationOS">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated when matching OS attributes are detected.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="property" type="ActivationProperty">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated when this property is specified.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="file" type="ActivationFile">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated based on existence of a file.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="packaging" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.2.0+</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated based on the project&apos;s packaging.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="condition" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">2.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The condition which must be satisfied to activate the profile.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationOS">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        This is an activator which will detect an operating system&apos;s attributes in order to activate
+        its profile.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The name of the OS to be used to activate a profile.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="family" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The general family of the OS to be used to activate a profile (e.g. &apos;windows&apos;)
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="arch" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The architecture of the OS to be used to activate a profile.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The version of the OS to be used to activate a profile.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationProperty">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        This is the property specification used to activate a profile. If the value field is empty,
+        then the existence of the named property will activate the profile, otherwise it does a case-sensitive
+        match against the property value as well.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The name of the property to be used to activate a profile.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="value" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The value of the property to be used to activate a profile.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationFile">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        This is the file specification used to activate a profile. The missing value will be the location
+        of a file that needs to exist, and if it doesn&apos;t the profile must run.  On the other hand exists will test
+        for the existence of the file and if it is there will run the profile.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="missing" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The name of the file that should be missing to activate a profile. Please note, that missing and exists
+            fields cannot be used together. Only one of them should be used at any one time.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="exists" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The name of the file that should exist to activate a profile. Please note, that missing and exists
+            fields cannot be used together. Only one of them should be used at any one time.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/toolchains-1.2.0-rc-4.xsd b/content/resources/xsd/toolchains-1.2.0-rc-4.xsd
new file mode 100644
index 00000000..689cfd59
--- /dev/null
+++ b/content/resources/xsd/toolchains-1.2.0-rc-4.xsd
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one             -->
+<!-- or more contributor license agreements. See the NOTICE file            -->
+<!-- distributed with this work for additional information                  -->
+<!-- regarding copyright ownership. The ASF licenses this file              -->
+<!-- to you under the Apache License, Version 2.0 (the                      -->
+<!-- "License"); you may not use this file except in compliance             -->
+<!-- with the License. You may obtain a copy of the License at              -->
+<!--                                                                        -->
+<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
+<!--                                                                        -->
+<!-- Unless required by applicable law or agreed to in writing,             -->
+<!-- software distributed under the License is distributed on an            -->
+<!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY                 -->
+<!-- KIND, either express or implied. See the License for the               -->
+<!-- specific language governing permissions and limitations                -->
+<!-- under the License.                                                     -->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.4.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/TOOLCHAINS/1.2.0" targetNamespace="http://maven.apache.org/TOOLCHAINS/1.2.0">
+  <xs:element name="toolchains" type="PersistedToolchains">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;toolchains&gt;} element is the root of the descriptor.
+        The following table lists all the possible child elements.
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="PersistedToolchains">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        The {@code &lt;toolchains&gt;} element is the root of the descriptor.
+        The following table lists all the possible child elements.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element minOccurs="0" name="toolchain" type="ToolchainModel" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">The toolchain instance definition.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="ToolchainModel">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description">Definition of a toolchain instance.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="type" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Type of toolchain:&lt;ul&gt;
+            &lt;li&gt;{@code jdk} for &lt;a
+            href=&quot;https://maven.apache.org/plugins/maven-toolchains-plugin/toolchains/jdk.html&quot;&gt;JDK Standard Toolchain&lt;/a&gt;,&lt;/li&gt;
+            &lt;li&gt;other value for &lt;a
+            href=&quot;https://maven.apache.org/plugins/maven-toolchains-plugin/toolchains/custom.html&quot;&gt;Custom Toolchain&lt;/a&gt;&lt;/li&gt;
+            &lt;/ul&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="provides">
+        <xs:annotation>
+          <xs:documentation source="version">1.1.0+</xs:documentation>
+          <xs:documentation source="description">
+            Toolchain identification information, which will be matched against project requirements.
+            &lt;p&gt;Each toolchain defines its own properties names and semantics.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Toolchain configuration information, like location or any information that is to be retrieved.
+            &lt;p&gt;Actual content structure is completely open: each toolchain type will define its own format and
+            semantics.
+            &lt;p&gt;In general, this is a properties format: {@code &lt;name&gt;value&lt;/name&gt;} with per-toolchain
+            defined properties names.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0d4838c8..a1b1b762 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,7 +58,7 @@
     <!-- disable Reproducible Builds that makes the site build time fixed at last release time -->
     <currentStableVersion>3.9.10</currentStableVersion>
     <currentStableVersionDetails>5f519b97e944483d878815739f519b2eade0a91d</currentStableVersionDetails>
-    <current4xVersion>4.0.0-rc-3</current4xVersion>
+    <current4xVersion>4.0.0-rc-4</current4xVersion>
     <current39xVersion>3.9.10</current39xVersion>
     <current38xVersion>3.8.9</current38xVersion>
     <current36xVersion>3.6.3</current36xVersion>