The basic idea is to have the possibility to translate whatever source changelog format to "native" XML, allowing to package a minimal runtime, then. For example, use Groovy DSL source format but not having to package and run Groovy in the application runtime.
I have prepared a prototype for demo purposes – a project using the Liquibase Gradle plugin as it was the easiest (self-contained and independent) for me:
Points of interest:
gradlew liquibaseUpdate – uses net/example/liquibase/groovy/changelog.groovy, while
gradlew run – uses generated net/example/liquibase/groovy/changelog.xml (see App.java)
The ChangeLog XML is generated by a custom liquibaseCompile task which is automatically run during gradlew build. The main implementation is CustomXMLChangeLogSerializer.java (in buildSrc/src/main/java/net/example/liquibase/groovy).
Similarly, the functionality could be exposed as additional goal to the Maven plugin and as an Ant task. If there's a general interest in adding this to the main distribution, I could provide a few more performance optimizations which might affect processing bases with many changelog files.