Locations
Published 31 October 2023
Locations
Description
Comma-separated list of locations to scan recursively for migrations. The location type is determined by its prefix.
For commandline usage, we recommend storing migrations in a separate folder to your Flyway installation. This makes upgrading easier, as the whole installation folder can be deleted and overwritten without affecting migrations.
Classpath
Unprefixed locations or locations starting with classpath:
point to a package on the classpath and may contain both SQL and Java-based migrations. 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 migrations and are only scanned recursively down non-hidden directories.
Amazon S3
Locations starting with s3:
point to a bucket in AWS S3, may only contain SQL migrations, 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 migrations, 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
)
Default
API/Maven/Gradle:
classpath:db/migration
Commandline:
filesystem:sql
Note: We do not recommend relying on the commandline default value. It may be changed in a future release.
Usage
Commandline
./flyway -locations="filesystem:./sql" info
TOML Configuration File
[flyway]
locations = ["filesystem:./sql"]
Configuration File
flyway.locations=filesystem:./sql
Environment Variable
FLYWAY_LOCATIONS=filesystem:./sql
API
Flyway.configure()
.locations("filesystem:./sql")
.load()
Gradle
flyway {
locations = ['filesystem:./sql']
}
Maven
<configuration>
<locations>
<location>filesystem:./sql</location>
</locations>
</configuration>