We’re tracking interest in using GraalVM with Liquibase.
Give it a thumbs up if you would find it valuable.
Also on that issue, you will find a link to a starting point on the configuration files needed for your GraalVM projects.
Some more info…
GraalVM is a popular tool for compiling Java applications into a smaller, faster, native binary. It is especially useful in environments where a fast startup is vital (such as with AWS Lambda functions).
Unfortunately, to do that native compilation, GraalVM needs to know the classes and functions that will be running. While it can automatically figure that out for directly-referenced classes, it can’t handle dynamic, reflection-based references.
There is a way to tell GraalVM what classes to find and compile using reflect-config.json and resource-config.json files, but they need to be manually managed. Since Liquibase is heavily built around dynamic references to support different JDBC drivers and/or our extension system, it would mean doing a LOT of manual configurations to create and maintain support for GraalVM compilation.
So our question to you is how many people are looking to compile Liquibase with GraalVM?
We cannot use it for our CLI or other versions we ship, because we need to support custom JDBC drivers and extensions that users add. While it could work for users who know what drivers and extensions need to be compiled for their specific use, how many users is that? It will be a chunk of effort to create and maintain those GraalVM config files which will take the effort away from other things we could be working on. If you would find it valuable, give it a thumbs up here: https://github.com/liquibase/liquibase/issues/1552