Just for reference, here is a PR fixing the issue by setting up proper dependabot rules as well: https://github.com/ascopes/protobuf-maven-plugin/pull/773
T On Sat, Aug 23, 2025 at 11:56 AM Tamás Cservenák <ta...@cservenak.net> wrote: > > Howdy, > > We have a thread about this on Slack, but let me just reiterate some > things brought up there... > > Here is what we could do, from "least helpful" to "most helpful" (for user > PoV): > > 1. clearly document these, like "Maven 3 uses Resolver 1, and Maven 4 > uses Resolver 2, do not mix the two...", similar to what site/doxia > have: > https://maven.apache.org/plugins/maven-site-plugin/history.html#maven-site-plugin-vs-doxia-vs-doxia-sitetools > In this case, this would only indirectly help users, that could come > to us once they hit the wall (breakage), and we can point them to > doco, or they proactively find and obey this doco... > > 2. provide BOMs > Maven 4 already provides them (two of them: "skinny" and "fat") while > Maven 3 does not provide any. On a related note, in one early efforts > for Maven 3 BOM that was closed out as we could not agree on "what BOM > is", there was an interesting idea by Konrad: > https://github.com/apache/maven/pull/689#issuecomment-1223881456 > This would also mean we could/should create not only "maven BOM" (fat > and skinny) but also "maven plugin BOM", that defines versions of > (core provided) dependencies that a Maven plugin _cannot override_ (as > they are provided to it by runtime). Still, this would again require > user change: a project using packaging maven-plugin should be updated > to use this maven-plugin-bom, but from that point on, smooth > sailing... > > 3. something more... > In general, we cannot figure out user intent when he goes from > resolver 1.x to 2.x, but in certain cases we do have some hints: > * packaging is maven-plugin (and major version of plugin tells, is it > 3.x or 4.x) > * use of maven-plugin-api is mandatory in these cases (unsure does > packaging enforce this?) and it defines the version of it -- but this > step may be redundant, as first step may be enough > * the packaging/plugin-api implicitly defines the "platform", like maven 3.9.x > * the platform defines major versions of dependencies as well, like > resolver 1.x and slf4j 1.x etc > So basically we may want a way to fail the build, if these divergences > (for example by major version to not be so nitpicky) are detected? > > Third option would make all these plugins fail, once the user would > update to a newer maven-plugin-plugin. > > Thanks > T > > On Sat, Aug 23, 2025 at 11:37 AM Slawomir Jaranowski > <s.jaranow...@gmail.com> wrote: > > > > We can add check for it in Maven validation - > > https://maven.apache.org/guides/plugins/validation/ > > > > and also in plugin-tools ... > > > > On Fri, 22 Aug 2025 at 20:03, Tamás Cservenák <ta...@cservenak.net> wrote: > > > > > > Howdy, > > > > > > I was just checking downstream dependencies of Resolver 2.x and was > > > first surprised how many of them are: > > > https://deps.dev/maven/org.apache.maven.resolver%3Amaven-resolver-api/2.0.10/dependents > > > > > > By inspecting, I discovered that MANY are in fact Maven 3 plugins (!), > > > building against some Maven 3.9.x version AND Resolver 2.0.x!!! > > > > > > By spot testing, I see these versions usually entered plugin projects > > > via automated dependency updates that were "green" and then (blindly) > > > merged. This is wrong! > > > > > > Resolver version in case Maven plugins should be kept in "lockstep" > > > with Maven plugin is built against (as those artifacts are swapped out > > > at runtime with runtime provided ones). This works based on the GA > > > exported by Maven Core. Maven 3 uses Resolver 1, so exported GAs are > > > based on Resolver 1.x, while Resolver 2.x introduces new artifacts but > > > also things like transport renames (http -> apache, new jdk transport, > > > etc). Basically, Resolver 2.x was NEVER meant to be used by Maven 3 > > > plugins! > > > > > > Automated updates done by dependabot and alike _work_ as Resolver 2.x > > > is strict regarding source and binary compatibility, see > > > https://maven.apache.org/resolver/upgrading-resolver.html but this > > > does not mean it is "right thing to do" (tm). > > > > > > Again, in case of Maven plugins major Maven dependencies usually need > > > to be kept in "lockstep" (fx if you build against Maven 3.9.11 you > > > should use Resolver 1.9.24). > > > > > > Maven 3 uses Resolver 1.x lineage, while Maven 4 uses Resolver 2.x > > > lineage. > > > > > > Mixing two major versions should not happen! > > > > > > Thanks > > > T > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > > > For additional commands, e-mail: users-h...@maven.apache.org > > > > > > > > > -- > > Sławomir Jaranowski > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > > For additional commands, e-mail: users-h...@maven.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org