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.

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