Details
-
Sub-task
-
Status: Resolved
-
P2
-
Resolution: Fixed
-
None
Description
Instead of shading as part of our build, we can shade before build so that it is apparent when reading code, and in IDEs, that a particular class resides in a hidden namespace.
import com.google.common.reflect.TypeToken
becomes something like
import org.apache.beam.private.guava21.com.google.common.reflect.TypeToken
So we can very trivially ban `org.apache.beam.private` from public APIs unless they are annotated @Internal, and it makes sharing between our own modules never get broken by shading again.
Attachments
Issue Links
- blocks
-
BEAM-4484 Shading model-pipeline / model-fn-execution / model-job-management produces corrupted classes
- Resolved
- is related to
-
BEAM-6420 Vendored Guava hits some errorprone issues
- Open
- relates to
-
BEAM-4753 Reuse validateShadedJarDoesntLeakNonOrgApacheBeamClasses across all subprojects which perform shading
- Open
- links to