bootique-flyway
Provides Flyway migrations framework integration with Bootique. See usage example bootique-flyway-demo.
Setup
Add bootique-flyway to your build tool:
Maven
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.bootique.bom</groupId>
<artifactId>bootique-bom</artifactId>
<version>2.0.M1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>io.bootique.flyway</groupId>
<artifactId>bootique-flyway</artifactId>
</dependency>
Gradle
compile("io.bootique.flyway:bootique-flyway:1.0")
Note: bootique-flyway is a part of bootique-bom, and version can be imported from there.
Available commands
FLYWAY COMMANDS AS OPTIONS
Flyway is based around just 6 commands: Migrate, Clean, Info, Validate, Baseline and Repair. They are represented in the Bootique-Flyway module as command line options.
-b, --baseline
Baselines an existing database, excluding all migrations up to and including baselineVersion.
--clean
Drops all objects (tables, views, procedures, triggers, ...) in the configured schemas.The schemas are cleaned in the order specified by the schemas property.
-i, --info
Prints the details and status information about all the migrations.
-m, --migrate
Migrates the schema to the latest version. Flyway will create the metadata table automatically if it doesn't exist.
-r, --repair
Repairs the metadata table.
-v, --validate
Validate applied migrations against resolved ones (on the filesystem or classpath) to detect accidental changes that may prevent the schema(s) from being recreated exactly.
BOOTIQUE OPTIONS
The standard Bootique command line options you may need:
-c yaml_location, --config=yaml_location
Specifies YAML config location, which can be a classpath (prefixed by classpath:), file path or a URL.
-H, --help-config
Prints information about application modules and their configuration
options.
Configuration
YAML configuration file
As an example here a YAML test config file: classpath:io/bootique/flyway/explicitNonDefaultMigrationConfigfile.yml.
jdbc:
test:
url: jdbc:h2:mem:defaultMigration
username: bogus
password: bogus
driverClassName: org.h2.Driver
flyway:
locations:
- bogus
configFiles:
- classpath:io/bootique/flyway/explicitNonDefaultMigrationConfigfile.conf
dataSources:
- test
Only three flyway options are recognized:
- locations: a list of Flyway locations to look for Flyway migrations
- configFiles: a list of Flyway configuraton files (as custom config files, see https://flywaydb.org/documentation/commandline/)
- dataSources: a list of JDBC connections
Using custom config files allows you to more easily run Flyway using a file for database connection settings (the Bootique YAML file) and application settings in a Flyway file.
In this example the locations property (with bogus as a non-existent location) is superseded by the settings in the Flyway configuration file.
Flyway configuration file
As an example here a Flyway test configuration file: classpath:io/bootique/flyway/explicitNonDefaultMigrationConfigfile.conf.
flyway.locations = path/migration