Flyway database migration tasks for Gradle.
Flyway v2.2 includes an [official plugin](http://flywaydb.org/documentation/gradle) based on this one. Note that the feature set diverged after contributing, e.g. removal of multi-db support.This plugin is hosted on the Maven Central Repository. All actions are logged at the info
level.
See Flyway's command-line arguments for the
configuration reference. If the locations
configuration is not set and the java
plugin is
detected then setting is defaulted to the sourceSets.main.output.resourcesDir
. If compiled
classes are detected then the sourceSets.main.output.classesDir
are added to the classpath and
classpath:db/migration
added to the default locations.
The flyway tasks may include Java migrations. This requires that the classes are compiled in a
dependent task. The dependsOnTasks
configuration acts as a dependsOn
relationship that applies
to all flyway tasks. This relationship is not required to allow for the inverse relationship, such
as for code generating from the schema. See the
gradle-jooq-plugin for one such example.
For a single-database environment, only a single database extension needs to be used. For an
environment where deployments to multiple databases must be run as part of the release,
defaults
can be used in addition to databases
. For lists, such as schemas
and
placeholders
, the list that appears in both extensions will be combined. In all other
cases, values specified in databases
will take precedence over values in defaults
.
apply plugin: 'flyway'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.h2database:h2:1.3.170'
classpath 'com.github.ben-manes:gradle-flyway-plugin:0.7'
}
}
flyway {
databases {
main {
url = "jdbc:h2:${buildDir}/db/flyway"
}
}
}
Drops all objects in the configured schemas.
Creates and initializes the metadata table in the schema.
Migrates the schema to the latest version.
Validates the applied migrations against the ones available on the classpath.
Prints the details and status information about all the migrations.
Repairs the Flyway metadata table after a failed migration.
flyway {
dependsOnTasks(compileJava)
databases {
main {
url = "jdbc:h2:${buildDir}/db/flyway"
driver = 'org.h2.Driver'
user = 'SA'
password = 'mySecretPwd'
table = 'schema_history'
schemas = [ 'schema1', 'schema2', 'schema3' ]
initVersion = '1.0'
initDescription = 'Base Migration'
locations = [
'classpath:com.mycompany.project.migration',
'filesystem:/sql-migrations',
'database/migrations'
]
sqlMigrationPrefix = 'Migration-'
sqlMigrationSuffix = '-OK.sql'
encoding = 'ISO-8859-1'
placeholders = [
'aplaceholder': 'value',
'otherplaceholder': 'value123'
]
placeholderPrefix = '#['
placeholderSuffix = ']'
target = '5.1'
outOfOrder = false
validateOnMigrate = true
cleanOnValidationError = false
initOnMigrate = false
}
}
}
flyway {
dependsOnTasks(compileJava)
schemaDefaultFirst = true
defaults {
driver = 'org.h2.Driver'
user = 'SA'
password = 'mySecretPwd'
table = 'schema_history'
schemas = [ 'schema1', 'schema2', 'schema3' ]
initVersion = '1.0'
initDescription = 'Base Migration'
locations = [
'classpath:com.mycompany.project.migration',
'filesystem:/sql-migrations',
'database/migrations'
]
encoding = 'ISO-8859-1'
placeholderPrefix = '#['
placeholderSuffix = ']'
target = '5.1'
outOfOrder = false
validateOnMigrate = true
cleanOnValidationError = false
initOnMigrate = false
placeholders = [ 'aplaceholder': 'value' ]
}
databases {
transactional {
url = "jdbc:h2:${buildDir}/db/flyway/transaction"
sqlMigrationPrefix = 'Transaction-'
sqlMigrationSuffix = '-OK.sql'
placeholders = [ 'otherplaceholder': 'value123'
schemas = [ 'schema4', 'schema5' ]
}
reporting {
url = "jdbc:h2:${buildDir}/db/flyway/report"
sqlMigrationPrefix = 'Reporting-'
sqlMigrationSuffix = '-OK.sql'
placeholders = [ 'otherplaceholder': 'value456' ]
schemas = [ 'schema6', 'schema7' ]
}
}
}