Implement "compileChangeLogXml" command

Description

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.

Environment

Gradle/Maven/Ant builds

Reporter

Stanimir Stamenkov

Components

Affects versions

Priority

Major
Configure