dropwizard-flyway travis-ci

Addon bundle for Dropwizard to support Flyway for database migrations

2 years after

Dropwizard Flyway

Build Status Coverage Status Maven Central

dropwizard-flyway is a set of commands using Flyway for database migrations in Dropwizard applications.

Usage

Just add the FlywayBundle to your Dropwizard application inside the Application#initialize method.

@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap) {
    // ...
    bootstrap.addBundle(new FlywayBundle<MyConfiguration>() {
        @Override
        public DataSourceFactory getDataSourceFactory(MyConfiguration configuration) {
            return configuration.getDataSourceFactory();
        }

        @Override
        public FlywayFactory getFlywayFactory(MyConfiguration configuration) {
            return configuration.getFlywayFactory();
        }
    });
}

After that you can use one of the following Flyway commands:

Command Description
db migrate Migrates the database
db clean Drops all objects in the configured schemas
db info Prints the details and status information about all the migrations
db validate Validates the applied migrations against the ones available on the classpath
db init Creates and initializes the metadata table (existing database)
db repair Repairs the metadata table

The Flyway migrations must be accessible in the classpath under db/migration (or any other path configured with the locations parameter, see FlywayFactory).

Configuration

dropwizard-flyway is using the standard DataSourceFactory from dropwizard-db for configuring its DataSource.

Additionally you can override the following configuration settings of Flyway using FlywayFactory:

flyway:
  # The encoding of SQL migrations. (default: UTF-8) 
  encoding: UTF-8
  # The schemas managed by Flyway. (default: default schema of the connection)
  schemas:
  # The fully qualified class names of the callbacks for lifecycle notifications. (default: empty list)
  callbacks:
  # The name of the schema metadata table that will be used by Flyway. (default: schema_version)
  metaDataTableName: schema_version
  # The file name prefix for sql migrations (default: V)
  sqlMigrationPrefix: V
  # The file name separator for sql migrations (default: __)
  sqlMigrationSeparator: __
  # The file name suffix for sql migrations (default: .sql)
  sqlMigrationSuffix: .sql
  # The prefix of every placeholder. (default: ${ )
  placeholderPrefix: ${
  # The suffix of every placeholder. (default: } )
  placeholderSuffix: }
  # The map of <placeholder, replacementValue> to apply to sql migration scripts. (default: empty map)
  placeholders:
  # Locations to scan recursively for migrations. (default: db/migration)
  locations:
    - db/migration
  # The fully qualified class names of the custom MigrationResolvers to be used in addition to the built-in ones for resolving Migrations to apply. (default: empty list)
  resolvers:
  # Allows migrations to be run "out of order". If you already have versions 1 and 3 applied, and now a version 2 is found, it will be applied too instead of being ignored. (default: false)
  outOfOrder: false
  # The description to tag an existing schema with when executing baseline. (default: << Flyway Baseline >>)
  baselineDescription: "<< Flyway Baseline >>"
  # Whether to automatically call baseline when migrate is executed against a non-empty schema with no metadata table. (default: false)
  # Be careful when enabling this as it removes the safety net that ensures Flyway does not migrate the wrong database in case of a configuration mistake!
  baselineOnMigrate: false
  # Whether to automatically call validate or not when running migrate. (default: true)
  validateOnMigrate: true

Maven Artifacts

This project is available on Maven Central. To add it to your project simply add the following dependencies to your pom.xml:

<dependency>
  <groupId>io.dropwizard.modules</groupId>
  <artifactId>dropwizard-flyway</artifactId>
  <version>1.0.0-1</version>
</dependency>

Support

Please file bug reports and feature requests in GitHub issues.

License

Copyright (c) 2014-2016 Jochen Schalanda

This library is licensed under the Apache License, Version 2.0.

See http://www.apache.org/licenses/LICENSE-2.0.html or the LICENSE file in this repository for the full license text.

Related Repositories

awesome-java

awesome-java

A curated list of awesome frameworks, libraries and software for the Java progra ...

awesome-java-cn

awesome-java-cn

Java资源大全中文版,包括开发库、开发工具、网站、博客、微信、微博等,由伯乐在线持续更新。 ...

awesome-java

awesome-java

A curated list of awesome Java frameworks, libraries and software. ...

awesome-java

awesome-java

A curated list of awesome Java frameworks, libraries and software. ...

cassandra-reaper

cassandra-reaper

Automated Repair Awesomeness for Apache Cassandra ...


Top Contributors

joschi arteam dotCipher

Releases

-   dropwizard-flyway-1. zip tar
-   dropwizard-flyway-1. zip tar
-   dropwizard-flyway-1. zip tar
-   dropwizard-flyway-1. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar
-   dropwizard-flyway-0. zip tar