gnodet opened a new issue, #12429: URL: https://github.com/apache/maven/issues/12429
## Problem When building a Quarkus project with Maven 4, the build fails with: ``` NoSuchBeanException: No matching bean available: type is interface org.eclipse.aether.RepositorySystem ``` This is because `quarkus-maven-plugin` versions < 3.26.0 use `smallrye-beanbag` to bootstrap the Maven Resolver, which is incompatible with Maven 4's reorganized Aether API. The fix was landed in Quarkus 3.26.0 ([quarkusio/quarkus#46889](https://github.com/quarkusio/quarkus/pull/46889)). `mvnup` currently handles 12 plugins via `PluginUpgradeStrategy`, but `quarkus-maven-plugin` is not among them. ## Proposed behavior ### 1. Upgrade the plugin to ≥ 3.26.0 If `quarkus-maven-plugin` is declared with a version < 3.26.0, upgrade it to 3.26.0 (the minimum Maven 4-compatible version). Both `io.quarkus` and `io.quarkus.platform` groupIds publish `quarkus-maven-plugin` — the strategy should handle both. ### 2. Decouple plugin version from BOM version if needed Many Quarkus projects reuse a single property (e.g. `${quarkus-platform-version}`) for both the platform BOMs and the plugin version. When mvnup bumps the plugin version, it **must not** change the BOM version — doing so would alter the entire dependency tree and potentially break the build. If the plugin version references the same property as the BOMs, mvnup should: - Introduce a new property (e.g. `quarkus-plugin-version`) set to 3.26.0 - Update the plugin's `<version>` to use the new property - Leave the BOM property unchanged ### 3. Warn about version gap After upgrading, if the platform BOM version is significantly older than the plugin version, mvnup should emit a warning like: > `quarkus-maven-plugin` upgraded to 3.26.0 for Maven 4 compatibility. Your Quarkus platform is still at `<platform-version>`. Consider upgrading the platform to match, as the plugin cannot be upgraded beyond 3.31.x without a corresponding platform upgrade. **Context on the upper bound:** In Quarkus 3.32.0 ([quarkusio/quarkus#52224](https://github.com/quarkusio/quarkus/pull/52224)), the internal `SerializedApplication.write()` method signature changed. Plugin versions ≥ 3.32.0 are binary-incompatible with platform/runtime libraries from < 3.32.0. So the plugin can only be bumped so far ahead of the platform before hitting a `NoSuchMethodError`. ## Verified version compatibility Tested with `apache/camel-k-runtime` (Quarkus platform 3.16.3) + Maven 4.0.0-SNAPSHOT: | Plugin Version | Build Result | Notes | |---|---|---| | 3.16.3 (original) | ❌ | `RepositorySystem` not found — no Maven 4 support | | 3.26.0 | ✅ | First Maven 4-compatible version | | 3.31.4 | ✅ | Last compatible version for 3.16.x platform | | 3.32.1 | ❌ | `SerializedApplication.write` signature mismatch | | 3.37.1 | ❌ | Same `NoSuchMethodError` | ## Complexity notes This is more complex than a typical `PluginUpgrade` entry because: - It requires property decoupling (not just a version bump) - There is both a minimum (3.26.0) and a practical maximum (depends on the platform version) - The warning about the version gap is important for user awareness A simpler first step could be to just add the upgrade entry and warn, without automating the property decoupling — that would still surface the problem and guide the user. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
