Add the following to your project/plugins.sbt
:
addSbtPlugin("com.toalmoal" % "sbt-liquibase" % "2.0.3")
Add the following to your 'build.sbt' ( if you are using build.sbt )
import com.permutive.sbtliquibase.SbtLiquibase
enablePlugins(SbtLiquibase)
liquibaseUsername := ""
liquibasePassword := ""
liquibaseDriver := "com.mysql.jdbc.Driver"
liquibaseUrl := "jdbc:mysql://localhost:3306/test_db?createDatabaseIfNotExist=true"
Setting | Description | Example |
---|---|---|
liquibaseUsername | Username for the database. This defaults to blank. | liquibaseUsername := "your_db_username" |
liquibasePassword | Password for the database. This defaults to blank. | liquibasePassword := "secret" |
liqubaseDriver | Database driver classname. There is no default. | liquibaseDriver := "com.mysql.jdbc.Driver" |
liquibaseUrl | Database connection uri. There is no default. | liquibaseUrl := "jdbc:mysql://localhost:3306/mydb" |
liquibaseChangelogCatalog | Default catalog name for the changelog tables. This defaults to None. | liquibaseChangelogCatalog := Some("my_catalog") |
liquibaseChangelogSchemaName | Default schema name for the changelog tables. This defaults to None. | liquibaseChangelogSchemaName := Some("my_schema") |
liquibaseDefaultCatalog | Default catalog name for the db if it isn't defined in the uri. This defaults to None. | liquibaseDefaultCatalog := Some("my_catalog") |
liquibaseDefaultSchemaName | Default schema name for the db if it isn't defined in the uri. This defaults to None. | liquibaseDefaultSchemaName := Some("my_schema") |
liquibaseChangelog | Full path to your changelog file. This defaults 'src/main/migrations/changelog.xml'. | liquibaseChangelog := "other/path/dbchanges.xml" |
Task | Description |
---|---|
liquibaseUpdate |
Run the liquibase migration |
liquibaseUpdateSql |
Writes SQL to update database to current version |
liquibaseStatus |
Print count of yet to be run changesets |
liquibaseClearChecksums |
Removes all saved checksums from database log. Useful for 'MD5Sum Check Failed' errors |
liquibaseListLocks |
Lists who currently has locks on the database changelog |
liquibaseReleaseLocks |
Releases all locks on the database changelog. |
liquibaseValidateChangelog |
Checks changelog for errors. |
liquibaseDbDiff |
( this isn't implemented yet ) Generate changeSet(s) to make Test DB match Development |
liquibaseDbDoc |
Generates Javadoc-like documentation based on current database and change log |
liquibaseGenerateChangelog |
Writes Change Log XML to copy the current state of the database to the file defined in the changelog setting |
liquibaseChangelogSyncQql |
Writes SQL to mark all changes as executed in the database to STDOUT |
liquibaseTag {tag} |
Tags the current database state for future rollback with {tag} |
liquibaseRollback {tag} |
Rolls back the database to the the state is was when the {tag} was applied. |
liquibaseRollbackSql {tag} |
Writes SQL to roll back the database to that state it was in when the {tag} was applied to STDOUT |
liquibaseRollbackCount {int} |
Rolls back the last {int i} change sets applied to the database |
liquibaseRollbackCountSql {int} |
Writes SQL to roll back the last {int i} change sets to STDOUT applied to the database |
liquibaseRollbackToDate {yyyy-MM-dd HH:mm:ss} |
Rolls back the database to the the state it was at the given date/time. Date Format: yyyy-MM-dd HH:mm:ss |
liquibaseRollbackToDateSql { yyyy-MM-dd HH:mm:ss } |
Writes SQL to roll back the database to that state it was in at the given date/time version to STDOUT |
liquibaseFutureRollbackSql |
Writes SQL to roll back the database to the current state after the changes in the changelog have been applied. |
liquibaseDropAll |
Drop all tables |
This is a straight-up port of the previous plugin sbt-liquibase-plugin, with slight updates to work with SBT 1.
I have found other similar plugins to be either abandoned or not updated frequently, which makes it very hard to rely on them for bug-fixes and features.
Inspiration from previous work done by others on the following projects was an enormous help.
- sbt-liquibase-plugin for the 0.13.x version
- sbt-liquibase plugin for sbt 0.11/0.12 (thanks for actually making this plugin in the first place!)