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]

Reply via email to