LoginSignup
1

More than 5 years have passed since last update.

Flywayのsbt pluginを利用した環境で、SQL-based migrationとJava-based migrationを併用する

Last updated at Posted at 2018-02-21

概要

FlywayのMigrationには、SQLを利用した SQL-based migration の他に、マイグレーション処理をコードで書くことができる Java-based migration がある。
(Java-based と書かれているが、もちろんScalaなどで書くことが可能なので Code-based migration と呼んだ方が正確かも)

Flywayのsbt-pluginを利用した環境で、この2種類のマイグレーション方法を併用する(通しのバージョン番号を付ける) 方法についてまとめる。

サンプルプロジェクト

実際にやってみたサンプルプロジェクトがこちら。

sbtの flyway サブプロジェクト内で flywayMigrate タスクを実行するとマイグレーション処理が走る。

サンプルプロジェクトの説明

flyway-sbt の基本的な設定については説明を省略し、2種類のマイグレーション方法を併用するのに関連する設定についてのみ説明する。

build.sbt

  • libraryDependenciesflyway-core を追加する
    • Java-based migration に必要
  • flywayLocations にマイグレーション用のSQLファイルを配置したディレクトリ名と、マイグレーション用のScalaコードを配置したパッケージ名(ディレクトリ名ではない点に注意) を設定する

マイグレーション用Scalaコード

  • flyway/src/main/scala/com/github/h_ikio/sbt_flyway_sample/migration 配下を参照
  • JdbcMigration インターフェースを実装するクラス内にマイグレーション処理を書く
  • ドキュメント に記載がある通り、クラス名のネーミングにルールがある点に注意
  • サンプルプロジェクトでは、ScalikeJDBCを利用してマイグレーション処理のコードを書いている
  • バージョン番号は SQL-based migration のものも含めて通し番号で付ければよい

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1