Flyway Callback Locations Setting
Published 17 September 2025
Description
Array of locations to scan recursively for callbacks. The location type is determined by its prefix.
If the callbackLocations
setting is not set, then callbacks will be scanned
from migration locations.
Note that deploy command callbacks can only be read from callbackLocations
, and never from
locations
.
Default value
There is no default value if not set, but projects created through the init command will set the following:
[flyway]
callbackLocations = ["filesystem:callbacks"]
Classpath
Locations without a prefix or locations starting with classpath:
point to a package on the classpath and
may contain both SQL and Java-based callbacks. You must ensure the package is available on the classpath (
see Adding to the classpath).
Filesystem
Locations starting with filesystem:
point to a directory on the filesystem, may only contain SQL callbacks
and are only scanned recursively down non-hidden directories.
Relative paths will be resolved against your working directory.
Amazon S3
Locations starting with s3:
point to a bucket in AWS S3, may only contain SQL callbacks, and are scanned
recursively. They are in the format s3:<bucket>(/optionalfolder/subfolder)
. To use AWS S3,
the AWS SDK v2 and dependencies must be included,
and configured for your S3 account.
Google Cloud Storage
Locations starting with gcs:
point to a bucket in Google Cloud Storage, may only contain SQL callbacks, and
are scanned recursively. They are in the format gcs:<bucket>(/optionalfolder/subfolder)
. To use GCS,
the GCS library must be included, and the GCS environment variable GOOGLE_APPLICATION_CREDENTIALS
must be
set to the credentials file for the service account that has access to the bucket.
Wildcards
Locations can contain wildcards. This allows matching against a path pattern instead of a single path. Supported
wildcards:
-
**
: Matches any 0 or more directories. (e.g.db/**/test
will matchdb/version1.0/test
,db/version2.0/test
,db/development/version/1.0/test
but notdb/version1.0/release
) -
*
: Matches any 0 or more non-separator characters. (e.g.db/release1.*
will matchdb/release1.0
,db/release1.1
,db/release1.123
but notdb/release2.0
) -
?
: Matches any 1 non-separator character. (e.g.db/release1.?
will matchdb/release1.0
,db/release1.1
but notdb/release1.11
)
Type
String array
Default
None
Usage
Flyway Desktop
This can't be set in a config file via Flyway Desktop, although it will be honoured, and it can be configured as an advanced parameter in operations on the Migrations page.
Command-line
./flyway -callbackLocations="filesystem:callbacks" info
TOML Configuration File
[flyway]
callbackLocations = ["filesystem:callbacks"]
Configuration File
flyway.callbackLocations=filesystem:callbacks
Environment Variable
FLYWAY_CALLBACK_LOCATIONS=filesystem:callbacks
API
Flyway.configure()
.callbackLocations("filesystem:callbacks")
.load()
Gradle
flyway {
callbackLocations = ['filesystem:callbacks']
}
Maven
<configuration>
<callbackLocations>
<callbackLocation>filesystem:callbacks</callbackLocation>
</callbackLocations>
</configuration>