GoogleCloudPlatform/DataflowJavaSDK

Dataflow SpringBoot app fails to run when bundled as a fat uber jar

Closed this issue · 2 comments

I have been working on a service that programmatically builds Dataflow pipeline using SpringBoot. My service runs perfectly when the application is started from the (IntelliJ) IDE or when I run with ./gradlew run but fails when I create the fat-uber-jar.

The issue seems to be related to https://issues.apache.org/jira/browse/BEAM-1325 and another issue #538 (although that is about an IDE and this is more broadly about development and deployment).

To verify, I opened the built jar and I see the following entries in the MANIFEST.MF file:

Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.example.dataExtractor.ApplicationKt
Spring-Boot-Version: 2.2.5.RELEASE
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/

This seems to be a pretty standard way of building SpringBoot apps and would appreciate some guidance in this direction.
Meanwhile, I have unblocked myself with a workaround which has its own drawbacks.
I wrote an article with more context if it helps.

Hi, you may wish to ask this question on the Apache Beam github repro, which is now used as the SDK for Dataflow. This repo is no longer being updated and users are advised to use the Apache Beam SDK instead.

https://github.com/apache/beam

Thanks.
For someone looking for this in the future, I have created an issue here