So doesn’t this require a new directive such as ‘<compile transitive=false”> 
scope or similar regardless of safe/rally points?   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?
  
> On Nov 5, 2017, at 11:30 PM, Stephen Connolly 
> <[email protected]> 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.

Reply via email to