[ https://issues.apache.org/jira/browse/FLINK-6529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Ewen resolved FLINK-6529. --------------------------------- Resolution: Fixed Fix Version/s: 1.4.0 Completed by resolution of all subtasks > Rework the shading model in Flink > --------------------------------- > > Key: FLINK-6529 > URL: https://issues.apache.org/jira/browse/FLINK-6529 > Project: Flink > Issue Type: Improvement > Components: Build System > Affects Versions: 1.3.0, 1.2.1 > Reporter: Stephan Ewen > Assignee: Chesnay Schepler > Priority: Critical > Fix For: 1.4.0 > > > 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)