Want to deploy your JVM, Node.js and Go apps effortlessly to AWS? Try our service Boxfuse

SBT Plugin

Supported SBT Versions

  • SBT 0.13.7 and newer


addSbtPlugin("org.flywaydb" % "flyway-sbt" % "4.0.3")

resolvers += "Flyway" at "https://flywaydb.org/repo"


Name Description
flywayMigrate Migrates the database
flywayClean Drops all objects in the configured schemas
flywayInfo Prints the details and status information about all the migrations
flywayValidate Validates the applied migrations against the ones available on the classpath
flywayBaseline Baselines an existing database, excluding all migrations up to and including baselineVersion
flywayRepair Repairs the metadata table


The Flyway SBT plugin can be configured in the following ways:

Directly in build.sbt

flywayUrl := "jdbc:hsqldb:file:target/flyway_sample;shutdown=true"

flywayUser := "SA"

flywayLocations += "org.flywaydb.sample.migration"

flywaySchemas := Seq("schema1", "schema2", "schema3")

flywayPlaceholders := Map(
    "keyABC" -> "valueXYZ",
    "otherplaceholder" -> "value123"

Through System properties

> sbt -Dflyway.user=myUser -Dflyway.schemas=schema1,schema2 -Dflyway.placeholders.keyABC=valXYZ

Overriding order

System properties override Plugin configuration

Custom Configurations

The flywayBaseSettings value of the Flyway plugin provides base configuration and task definitions for the plugin. This can be reused in custom configurations other than the those provided for the runtime and test configurations, if projects require it. These settings may be reused as follows:

import org.flywaydb.sbt.FlywayPlugin

lazy val CustomConfig = config("custom") describedAs "A custom config." extend Runtime

lazy val customSettings: Seq[Def.Setting[_]] = Seq(
  flywayUser := "customUser",
  flywayPassword := "customPassword",
  flywayUrl := "jdbc:driver://host:port/db",

lazy val app = (project in file("app")).
  settings(inConfig(CustomConfig)(FlywayPlugin.flywayBaseSettings(CustomConfig) ++ customSettings): _*)

SBT: migrate