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-standard
which contains the Liquibase engine/API plus standard functionalityliquibase-snowflake
adds contains support for Snowflakeliquibase-cli
adds contains the CLI integrationliquibase-core
which 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-plugin
contains the Maven integrationliquibase-cdi
contains the CDI 2.0 integrationliquibase-cdi-jakarta
contains the CDI 3.0+ integrationliquibase-dist
contains the distributable CLI zip/tar.gz/installer package
Utility modules
The remaining submodules are for testing and other purposes, including:
liquibase-integration-tests
which contains tests that run against databasesliquibase-extension-testing
which 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:
src
containing all the source codesrc/main
containing the "production" codesrc/main/java
containing the "production" Java codesrc/main/resources
containing static files for the "production" artifactssrc/test
containing the "test" codesrc/test/java
andsrc/test/groovy
containing the "test" java and groovy codesrc/test/resources
containing static files for use in tests
Further Reading
- Learn about the major components
- Read our coding style guide