Support for thin executable jars
If you try to build an image with a Spring Boot Thin Launcher target (thin not fat jar) the Spring Boot BP barfs because it can't find a bill of materials:
[INFO] [creator] Paketo Executable JAR Buildpack 5.3.0
[INFO] [creator] https://github.com/paketo-buildpacks/executable-jar
[INFO] [creator] Class Path: Contributing to layer
[INFO] [creator] Writing env/CLASSPATH.delim
[INFO] [creator] Writing env/CLASSPATH.prepend
[INFO] [creator] Process types:
[INFO] [creator] executable-jar: java org.springframework.boot.loader.wrapper.ThinJarWrapper (direct)
[INFO] [creator] task: java org.springframework.boot.loader.wrapper.ThinJarWrapper (direct)
[INFO] [creator] web: java org.springframework.boot.loader.wrapper.ThinJarWrapper (direct)
[INFO] [creator]
[INFO] [creator] Paketo Spring Boot Buildpack 4.6.0
[INFO] [creator] https://github.com/paketo-buildpacks/spring-boot
[INFO] [creator]
[INFO] [creator] Paketo Spring Boot Buildpack 4.6.0
[INFO] [creator] manifest does not container Spring-Boot-Lib
[INFO] [creator] ERROR: failed to build: exit status 1
I think for compatibility with other bp configuration you’d really want to download all the deps at image build time and include them in the BOM. This would bring us into line with the CF buildpacks as well (which already support thin jars via an additional step during droplet creation).
To download the deps (to ~/.m2/repository by default) and print the classpath you can just run the jar with --thin.classpath. Other options are available (e.g. properties file format). See docs here: https://github.com/spring-projects-experimental/spring-boot-thin-launcher
@dsyer is this still worth doing?
I think so. It’s not hard.