Code Structure
Top-Level Modules
The Liquibase repository is divided into a series of submodules, each with a specific purpose.
Code shipped as part of liquibase-core.jar
The liquibase-core.jar file is made up of several submodules:
liquibase-standardwhich contains the Liquibase engine/API plus standard functionalityliquibase-snowflakeadds contains support for Snowflakeliquibase-cliadds contains the CLI integrationliquibase-corewhich has no code itself, but combines the other modules into the single, final jar
By separating blocks of functionality within liquibase-core.jar into independent submodules, we can better control internal code dependencies.
Independently shipped artifacts
Other independently shipped artifacts are also submodules:
liquibase-maven-plugincontains the Maven integrationliquibase-cdicontains the CDI 2.0 integrationliquibase-cdi-jakartacontains the CDI 3.0+ integrationliquibase-distcontains the distributable CLI zip/tar.gz/installer package
Utility modules
The remaining submodules are for testing and other purposes, including:
liquibase-integration-testswhich contains tests that run against databasesliquibase-extension-testingwhich contains the test environment code as well as other environmental testing base classes
Module Structure
Within each submodule, the code is structured following the Maven standard layout, with:
srccontaining all the source codesrc/maincontaining the "production" codesrc/main/javacontaining the "production" Java codesrc/main/resourcescontaining static files for the "production" artifactssrc/testcontaining the "test" codesrc/test/javaandsrc/test/groovycontaining the "test" java and groovy codesrc/test/resourcescontaining static files for use in tests
Further Reading
- Learn about the major components
- Read our coding style guide