Hi all,

https://github.com/apache/beam/pull/2096 introduced a common shading
configuration for all of the modules in the project.

The reason for this is that modules which are dependent on Guava may leak
this dependency to the user and this could conflict with the version of
Guava they require.
A common, default shading configuration ensures that if a module adds a
dependency on Guava it will be shaded and relocated to avoid these
conflicts.

This change does make the file sizes of the modules' jars go up. If there
are modules which are dependent on Guava but do not require shading and
relocating of it (i.e. the module does not pose a risk of leaking Guava to
the user) we can "opt-out" that module from default shading configuration.
To do this add the following to the module's build plugins:
https://github.com/apache/beam/pull/2096#issuecomment-286393622


P.S.

Our shading of Guava currently only saves us from non-transitive
dependencies of Guava. If a module has a transitive dependency on Guava
(And does not have an explicit non-transitive dependency on it) it will not
be shaded (Maven dependencies plugin protects us from this, but not in all
cases). We plan to fix this in
https://issues.apache.org/jira/browse/BEAM-1706

We can consider configuring minimization for our maven shade plugin to
reduce the jar sizes, but there are some issues with this. See:
https://issues.apache.org/jira/browse/BEAM-1720

Reply via email to