documentation/Reference/Configuration/Flyway Namespace/Flyway Locations Setting.md
Array 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.
Locations without a prefix or locations starting with <code>classpath:</code> 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).
Locations starting with <code>filesystem:</code> point to a directory on the filesystem, may only contain SQL migrations and are only scanned recursively down non-hidden directories. Relative paths will be resolved against your working directory.
Locations starting with <code>s3:</code> point to a bucket in AWS S3, may only contain SQL migrations, and are scanned recursively. They are in the format <code>s3:<bucket>(/optionalfolder/subfolder)</code>. To use AWS S3, the AWS SDK v2 and dependencies must be included, and configured for your S3 account.
{% include teams.html %}
Locations starting with <code>gcs:</code> point to a bucket in Google Cloud Storage, may only contain SQL migrations, and are scanned recursively. They are in the format <code>gcs:<bucket>(/optionalfolder/subfolder)</code>. To use GCS, the GCS library must be included, and the GCS environment variable <code>GOOGLE_APPLICATION_CREDENTIALS</code> must be set to the credentials file for the service account that has access to the bucket.
Locations can contain wildcards. This allows matching against a path pattern instead of a single path. Supported wildcards:
<ul> <li> <code>**</code> : Matches any 0 or more directories. (e.g. <code>db/**/test</code> will match <code>db/version1.0/test</code>, <code>db/version2.0/test</code>, <code>db/development/version/1.0/test</code> but not <code>db/version1.0/release</code>) </li> <li> <code>*</code> : Matches any 0 or more non-separator characters. (e.g. <code>db/release1.*</code> will match <code>db/release1.0</code>, <code>db/release1.1</code>, <code>db/release1.123</code> but not <code>db/release2.0</code>) </li> <li> <code>?</code> : Matches any 1 non-separator character. (e.g. <code>db/release1.?</code> will match <code>db/release1.0</code>, <code>db/release1.1</code> but not <code>db/release1.11</code>) </li> </ul>String array
API:
classpath:db/migration
Maven/Gradle: filesystem:src/main/resources/db/migration
Command-line:
filesystem:sql
Note: We do not recommend relying on the commandline default value. It may be changed in a future release.
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.
./flyway -locations="filesystem:./sql" info
[flyway]
locations = ["filesystem:./sql"]
flyway.locations=filesystem:./sql
FLYWAY_LOCATIONS=filesystem:./sql
Flyway.configure()
.locations("filesystem:./sql")
.load()
flyway {
locations = ['filesystem:./sql']
}
<configuration>
<locations>
<location>filesystem:./sql</location>
</locations>
</configuration>