I'm not asking this on SO, as its not really programming and as such not really applicable there.
Looking at Spring Boot, its uber jar deployment model seems to create conflicts in derived works using Spring Data JPA. Hibernate is an LGPL project. Its allowable to be used as its dynamically linked. The uber jar approach seems to create an issue here - its no longer dynamically linked.
So I was wondering, is there any way to create a non-LGPL derived work from Spring Boot using Spring Data JPA?
Comment From: philwebb
IANAL but I would argue that the use of a Spring Boot uber jar doesn't violate the license. An uber JAR is just a distribution mechanism, it doesn't fundamentally change the way that the library is loaded.
The LGPL and Java section on gnu.org has this to say:
If you distribute a Java application that imports LGPL libraries, it's easy to comply with the LGPL. Your application's license needs to allow users to modify the library, and reverse engineer your code to debug these modifications
With a Spring Boot FAT jar this can be done by unpacking the JAR, replacing the LGPL library, then either repacking the jar (using spring-boot-loader-tools
) or simply running in the exploded form.
Hope that helps.
Comment From: johnament
That would be the case, the problem is that to leverage anything but hibernate requires me to override the jpa vendor.
Comment From: philwebb
@johnament I'm not following, what do you mean by "override the jpa vendor" and how does that violate the license?
Comment From: corlaez
@philwebb That's a nice link, but nowhere there it describes uber jars usage as compatible.
I don't have a legal precedent to cite, but the way I understand LGPL your artifact should be able to swap dependencies code without you touching it or modifying it in any way. With an uber jar you have to modify your artifact to change the dependency code which could trigger LGPL infectious nature.
I am not staying away Uber jar and their static linking and going old school with copy dependencies whenever i have lgpl concerns