LiquiBase is designed to be flexible both in how it can be embedded and executed as well as how it behaves. As an Apache-licensed project, you are free to extend or integrate as you see fit and keep those changes private, or contribute them back to the community. Have a suggestion on how to make the LiquiBase Extensions Portal better? Contact us.
LiquiBase is integrated into systems primarily via the liquibase.LiquiBase facade. This object allows you to programatically control what LiquiBase does and/or create new execution methods beyond the Ant, Grails, command line, etc. options available in the core platform. Available integration points include:
To the right is the path LiquiBase takes from changelog to database. Each stage can be modified to support new functionaly or to modify existing logic.
While LiquiBase provides default implementations of all these steps, any one can be overridden with a custom subclass. At each step in the process, LiquiBase will search classes in known packages (liquibase core jar as well as all liquibase.ext.* package structures) for classes that implement the correct interfaces. If it finds more than one that matches the correct interface, it will use a getPriority() method that is defined for each class. The class with the higest priority is used. The core LiquiBase classes use priorities 1 and 5
The basic path is:
Available extension points include: