maven-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stephen Connolly <>
Subject Re: Reactor safe/rally points
Date Tue, 07 Nov 2017 07:28:29 GMT
On Tue 7 Nov 2017 at 01:18, Charles Honton <> wrote:

> So doesn’t this require a new directive such as ‘<compile
> transitive=false”> scope or similar regardless of safe/rally points?

No. The plugin would have its descriptor metadata for the goal contain a

Then the plugin is responsible for deciding what dependencies to remove or
lower the scope of

 And to provide backwards compatibility, there must be a split between the
> legacy consumer view of the pom and the new producer view of the pom?

When the dependencies are removed, the pom that gets installed is the
dependency reduced pom.

Shade already does that, but in Maven 3.3.x the model in-memory was made
immutable so now you cannot shade an artifacts and consume it correctly
within the same reactor without having to maintain a set of <exclusions>
tags at every point of use. Outside the reactor use is ok... but then
people who create flyweight local aggregator projects can hit the bug
without knowing it.

> > On Nov 5, 2017, at 11:30 PM, Stephen Connolly <
>> wrote:
> >
> >> In the first case, the module creating a shaded jar can mark its
> >> constituent jars as optional; preventing the transitive dependencies.
> >
> >
> > Ha! That does not do what you think it does.
> >
> > Optional dependencies are still there but only as a version constraint
> that
> > gets applied if something else brings the dependency into the tree in as
> a
> > non-optional dependency.
> >
> > Normally you need a complex deep tree to see the effect (as most people
> use
> > version hints rather than specifications... and with hints, closest wins,
> > whereas specifications are globally merged)
> >
> > Provided scope is more correct, but shade doesn’t operate on provided
> > scope... and anyway iirc that also pushes the constraint as transitive.
> >
> > With shade, the dependency is removed.
> --
Sent from my phone

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message