概要
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
-
libraryDependencies
にflyway-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
のものも含めて通し番号で付ければよい