[
https://issues.apache.org/jira/browse/FLINK-6529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chesnay Schepler reassigned FLINK-6529:
---------------------------------------
Assignee: Chesnay Schepler (was: Haohui Mai)
> Rework the shading model in Flink
> ---------------------------------
>
> Key: FLINK-6529
> URL: https://issues.apache.org/jira/browse/FLINK-6529
> Project: Flink
> Issue Type: Bug
> Components: Build System
> Affects Versions: 1.3.0, 1.2.1
> Reporter: Stephan Ewen
> Assignee: Chesnay Schepler
> Priority: Critical
>
> h2. Problem
> Currently, Flink shades dependencies like ASM and Guava into all jars of
> projects that reference it and relocate the classes.
> There are some drawbacks to that approach, let's discuss them at the example
> of ASM:
> - The ASM classes are for example in {{flink-core}}, {{flink-java}},
> {{flink-scala}}, {{flink-runtime}}, etc.
> - Users that reference these dependencies have the classes multiple times
> in the classpath. That is unclean (works, through, because the classes are
> identical). The same happens when building the final dist. jar.
> - Some of these dependencies require to include license files in the shaded
> jar. It is hard to impossible to build a good automatic solution for that,
> partly due to Maven's very poor cross-project path support
> - Scala does not support shading really well. Scala classes have references
> to classes in more places than just the class names (apparently for Scala
> reflect support). Referencing a Scala project with shaded ASM still requires
> to add a reference to unshaded ASM (at least as a compile dependency).
> h2. Proposal
> I propose that we build and deploy a {{asm-flink-shaded}} version of ASM and
> directly program against the relocated namespaces. Since we never use classes
> that we relocate in public interfaces, Flink users will never see the
> relocated class names. Internally, it does not hurt to use them.
> - Proper maven dependency management, no hidden (shaded) dependencies
> - one copy of each dependency
> - proper Scala interoperability
> - no clumsy license management (license is in the deployed
> {{asm-flink-shaded}})
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)