Skip to content



liquibase.precondition.Precondition implementations allow validation and checks to be run against the environment before running a changelog as a whole, or before running individual changesets.

Precondition Selection

Each Precondition has a "name", and the ChangeLogParser selects the correct implementation by matching the name in the changelog file with the names defined by Precondition implementations.

Preconditions do yet support a priority mechanism, so each precondition must have a unique name.

API Highlights


Preconditions are dynamically discovered, so must have a no-arg constructor and be registered in the META-INF/services/liquibase.precondition.Precondition file.


This function contains the logic to determine if the precondition passes or fails.

If the precondition fails, throw a PreconditionFailedException describing the problem.

If it cannot be determined whether the precondition passed or failed, throw a PreconditionErrorException describing the problem.

validate() and warn()

These methods check whether the precondition can be run or not given its configuration and environment.

Define Configuration Attributes

If the precondition requires custom attributes to be set (tableName, etc.), create get/set methods for them.

Any public get/set pairs will be exposed to the end-user as attributes on the precondition.

API Details

The complete javadocs for liquibase.precondition.Precondition is available at

Extension Guides

The following guides provide relevant examples:

Last update: April 5, 2023
Created: March 28, 2023