A DESCRIPTION OF THE PROBLEM :
I would like to be able to use jlink to create a modularized version of an application running Spring Boot.
As described in this issue, after many many attempts I found it essentially impossible:
Issues I ran into:
- Libraries that declared transitive dependencies in their module-info.java that wound up requiring now-removed modules (specifically, activation).
- Confusing error messages throughout
- Attempts to use jdeps to add module-info to existing libraries ran into many problems and errors, including circular references (e.g. slf4j -> logback -> slf4j)
- Extraordinarily confusing terminology in practice and errors (e.g. static in modules has nothing to do with static in Java)
I would suggest that the developer experience for jlink/jdeps be enhanced to make it possible for an end developer to be able to create a Spring Boot image trivially. The GraalVM and Spring Native projects are an effort to make small, cloud-friendly Spring Boot applications - https://github.com/spring-projects-experimental/spring-native - and jlink could be a solid competitive given additional investment in the developer experience.