Shade dependencies in sdks/core
Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/62f2173a Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/62f2173a Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/62f2173a Branch: refs/heads/master Commit: 62f2173a1c03ba0433ab4941b7546f2d789b998f Parents: c567550 Author: Vikas Kedigehalli <[email protected]> Authored: Tue May 9 11:41:29 2017 -0700 Committer: Davor Bonaci <[email protected]> Committed: Tue May 9 17:37:05 2017 -0700 ---------------------------------------------------------------------- sdks/java/core/pom.xml | 74 ++++++++++++++++++++ .../org/apache/beam/sdk/util/ApiSurface.java | 10 ++- 2 files changed, 83 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/62f2173a/sdks/java/core/pom.xml ---------------------------------------------------------------------- diff --git a/sdks/java/core/pom.xml b/sdks/java/core/pom.xml index 7ed6c8a..ef1873d 100644 --- a/sdks/java/core/pom.xml +++ b/sdks/java/core/pom.xml @@ -120,6 +120,80 @@ </execution> </executions> </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <executions> + <execution> + <id>bundle-and-repackage</id> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <artifactSet> + <includes> + <include>com.google.guava:guava</include> + <include>com.google.protobuf:protobuf-java</include> + <include>net.bytebuddy:byte-buddy</include> + <include>org.apache.commons:*</include> + </includes> + </artifactSet> + <filters> + <filter> + <artifact>*:*</artifact> + <excludes> + <exclude>META-INF/*.SF</exclude> + <exclude>META-INF/*.DSA</exclude> + <exclude>META-INF/*.RSA</exclude> + </excludes> + </filter> + </filters> + <relocations> + <relocation> + <pattern>com.google.common</pattern> + <!--suppress MavenModelInspection --> + <shadedPattern> + org.apache.beam.sdk.repackaged.com.google.common + </shadedPattern> + </relocation> + <relocation> + <pattern>com.google.thirdparty</pattern> + <!--suppress MavenModelInspection --> + <shadedPattern> + org.apache.beam.sdk.repackaged.com.google.thirdparty + </shadedPattern> + </relocation> + <relocation> + <pattern>com.google.protobuf</pattern> + <!--suppress MavenModelInspection --> + <shadedPattern> + org.apache.beam.sdk.repackaged.com.google.protobuf + </shadedPattern> + </relocation> + <relocation> + <pattern>net.bytebuddy</pattern> + <!--suppress MavenModelInspection --> + <shadedPattern> + org.apache.beam.sdk.repackaged.net.bytebuddy + </shadedPattern> + </relocation> + <relocation> + <pattern>org.apache.commons</pattern> + <!--suppress MavenModelInspection --> + <shadedPattern> + org.apache.beam.sdk.repackaged.org.apache.commons + </shadedPattern> + </relocation> + </relocations> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> + </transformers> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> http://git-wip-us.apache.org/repos/asf/beam/blob/62f2173a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java index 8c2b988..685efef 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/ApiSurface.java @@ -352,7 +352,15 @@ public class ApiSurface { Set<Class<?>> newRootClasses = Sets.newHashSet(); for (ClassPath.ClassInfo classInfo : classPath.getTopLevelClassesRecursive(packageName)) { - Class clazz = classInfo.load(); + Class clazz = null; + try { + clazz = classInfo.load(); + } catch (NoClassDefFoundError e) { + // TODO(BEAM-2231): Ignore any NoClassDefFoundError errors as a workaround. + LOG.warn("Failed to load class: {}", classInfo.toString(), e); + continue; + } + if (exposed(clazz.getModifiers())) { newRootClasses.add(clazz); }
