Looks like something that we should apply also to our 3.x branches for
Maven projects

Sylwester

sob., 23 sie 2025, 14:49 użytkownik Tamás Cservenák <ta...@cservenak.net>
napisał:

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

Reply via email to