On Wed, Feb 26, 2014 at 09:22AM, Sean Owen wrote:
> Side point -- "provides" scope is not the same as an exclude.
> "provides" means, this artifact is used directly by this code (compile
> time), but it is not necessary to package it, since it will be
> available from a runtime container. Exclusions make an artifact, that
> would otherwise be available, unavailable at both compile time and
> run-time.

When used at the assemble phase, exclude doesn't affect compile-time deps.
That's exactly what I was looking for while making Spark build suitable for
Bigtop needs.

The main reason was and is: Bigtop stack guarantees the presence of all
upstream libs and their compatibility. So, redistribution in any form is
potentially harmful and useless, at least.

Cos

> SBT appears to have syntax for both, just like Maven. Surely these
> have the same meanings in SBT, and excluding artifacts is accomplished
> with exclude and excludeAll, as seen in the Spark build?
> 
> The assembly and shader stuff in Maven is more about controlling
> exactly how it's put together into an artifact, at the level of files
> even, to stick a license file in or exclude some data file cruft or
> rename dependencies.
> 
> exclusions and shading are necessary evils to be used as sparingly as
> possible. Dependency graphs get nuts fast here, and Spark is already
> quite big. (Hence my recent PR to start touching it up -- more coming
> for sure.)
> 
> On Tue, Feb 25, 2014 at 11:20 PM, Evan Chan <e...@ooyala.com> wrote:
> > The correct way to exclude dependencies in SBT is actually to declare
> > a dependency as "provided".   I'm not familiar with Maven or its
> > dependencySet, but provided will mark the entire dependency tree as
> > excluded.   It is also possible to exclude jar by jar, but this is
> > pretty error prone and messy.

Reply via email to