[ 
https://issues.apache.org/jira/browse/FLINK-5989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15952094#comment-15952094
 ] 

Wenlong Lyu edited comment on FLINK-5989 at 4/1/17 7:10 AM:
------------------------------------------------------------

hi, [~rmetzger], have you ever try add a module like flink-shade-akka-remote to 
solve the problem
{code}
<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>

        <modelVersion>4.0.0</modelVersion>

        <parent>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-parent</artifactId>
                <version>1.3-blink-1.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>

        <artifactId>flink-shaded-akka-remote</artifactId>
        <name>flink-shaded-akka-remote</name>

        <packaging>jar</packaging>

        <dependencies>
                <dependency>
                        <groupId>com.data-artisans</groupId>
                        
<artifactId>flakka-remote_${scala.binary.version}</artifactId>
                        <version>${akka.version}</version>
                </dependency>

        </dependencies>

        <build>
                <plugins>
                        <!-- Relocate the Hadoop's Guava dependency into a 
different namespace and
                        put Hadoop into a fat-jar.
                        -->
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-shade-plugin</artifactId>
                                <executions>
                                        <execution>
                                                <!--Disable shade-flink 
execution to avoid duplicate relocation of
                                                dependencies-->
                                                <id>shade-flink</id>
                                                <phase>none</phase>
                                        </execution>
                                        <execution>
                                                <id>shade-akka</id>
                                                <phase>package</phase>
                                                <goals>
                                                        <goal>shade</goal>
                                                </goals>
                                                <configuration>
                                                        
<shadedArtifactAttached>false</shadedArtifactAttached>
                                                        
<createDependencyReducedPom>true</createDependencyReducedPom>
                                                        
<dependencyReducedPomLocation>${project.basedir}/target/dependency-reduced-pom.xml</dependencyReducedPomLocation>
                                                        
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
                                                        <transformers>
                                                                <!-- The 
service transformer is needed to merge META-INF/services files -->
                                                                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                                                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer"/>
                                                        </transformers>
                                                        <artifactSet>
                                                                <includes>
                                                                        
<include>com.google.protobuf:*</include>
                                                                </includes>
                                                        </artifactSet>
                                                        <relocations>
                                                                <relocation>
                                                                        
<pattern>com.google</pattern>
                                                                        
<shadedPattern>org.apache.flink.akka.shaded.com.google</shadedPattern>
                                                                        
<excludes>
                                                                                
<exclude>com.google.inject.**</exclude>
                                                                        
</excludes>
                                                                </relocation>
                                                        </relocations>
                                                </configuration>
                                        </execution>
                                </executions>
                        </plugin>

                </plugins>
        </build>
</project>
{code}


was (Author: wenlong.lwl):
hi, [~rmetzger], have you ever try add a module like flink-shade-akka-remote to 
solve the problem
{code}
<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>

        <modelVersion>4.0.0</modelVersion>

        <parent>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-parent</artifactId>
                <version>1.3-blink-1.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>

        <artifactId>flink-shaded-akka-remote</artifactId>
        <name>flink-shaded-akka-remote</name>

        <packaging>jar</packaging>

        <dependencies>
                <dependency>
                        <groupId>com.data-artisans</groupId>
                        
<artifactId>flakka-remote_${scala.binary.version}</artifactId>
                        <version>${akka.version}</version>
                </dependency>

        </dependencies>

        <build>
                <plugins>
                        <!-- Relocate the Hadoop's Guava dependency into a 
different namespace and
                        put Hadoop into a fat-jar.
                        -->
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-shade-plugin</artifactId>
                                <executions>
                                        <execution>
                                                <!--Disable shade-flink 
execution to avoid duplicate relocation of
                                                dependencies-->
                                                <id>shade-flink</id>
                                                <phase>none</phase>
                                        </execution>
                                        <execution>
                                                <id>shade-akka</id>
                                                <phase>package</phase>
                                                <goals>
                                                        <goal>shade</goal>
                                                </goals>
                                                <configuration>
                                                        
<shadedArtifactAttached>false</shadedArtifactAttached>
                                                        
<createDependencyReducedPom>true</createDependencyReducedPom>
                                                        
<dependencyReducedPomLocation>${project.basedir}/target/dependency-reduced-pom.xml</dependencyReducedPomLocation>
                                                        
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
                                                        <transformers>
                                                                <!-- The 
service transformer is needed to merge META-INF/services files -->
                                                                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                                                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer"/>
                                                        </transformers>
                                                        <artifactSet>
                                                                <includes>
                                                                        
<include>com.google.protobuf:*</include>
                                                                </includes>
                                                        </artifactSet>
                                                        <relocations>
                                                                <relocation>
                                                                        
<pattern>com.google</pattern>
                                                                        
<shadedPattern>org.apache.flink.akka.shaded.com.google</shadedPattern>
                                                                        
<excludes>
                                                                                
<exclude>com.google.inject.**</exclude>
                                                                        
</excludes>
                                                                </relocation>
                                                        </relocations>
                                                </configuration>
                                        </execution>
                                </executions>
                        </plugin>

                </plugins>
        </build>
</project>
{/code}

> Protobuf in akka needs to be shaded
> -----------------------------------
>
>                 Key: FLINK-5989
>                 URL: https://issues.apache.org/jira/browse/FLINK-5989
>             Project: Flink
>          Issue Type: Improvement
>          Components: Build System
>            Reporter: Wenlong Lyu
>
> Currently akka introduces dependency on protobuf, which is a common jar used 
> in many systems, I think we need to use a shaded akka like what we do in 
> dependency on hadoop to avoid version conflicts with user code.
> {code}
> [INFO] +- com.data-artisans:flakka-actor_2.10:jar:2.3-custom:compile
> [INFO] |  \- com.typesafe:config:jar:1.2.1:compile
> [INFO] +- com.data-artisans:flakka-remote_2.10:jar:2.3-custom:compile
> [INFO] |  +- io.netty:netty:jar:3.8.0.Final:compile
> [INFO] |  +- com.google.protobuf:protobuf-java:jar:2.5.0:compile
> [INFO] |  \- org.uncommons.maths:uncommons-maths:jar:1.2.2a:compile
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to