liquibase.parser.ChangeLogParser implementations allow you to read database changelog files written in different formats. The default changelog format is XML based, but there is nothing inherently XML in the Liquibase internals.
- A parser for a Liquibase DSL
- A parser to read database changes stored in a 3rd party system
How to Create
Custom parsers must implement liquibase.parser.ChangeLogParser, which includes the following methods:
public String getValidFileExtensions();
Returns the file extensions this parser understands. When Liquibase is fed a change log file, it will choose the parser based on the file extension.
public DatabaseChangeLog parse(String physicalChangeLogLocation, Map<String, Object> changeLogParameters, FileOpener fileOpener) throws ChangeLogParseException
Does the work of parsing a given changelog file into the internal DatabaseChangeLog object structure used by the rest of Liquibase.
Registering Custom Parsers
There are two ways to register a custom ChangeLogParsers:
- Create the class in a sub-package of "liquibase.parser.ext". Liquibase automatically registers Databases it finds in that package
- Call liquibase.parser.ChangeLogParserFactory.getInstance().register(yourParser)
ChangeLogParsers implementations should be created thread safe. Once an instance of a ChangeLogParser registered, ChangeLogParserFactory will continue to use the return instance.