😎
jOOQ + Flywayでコード生成
前回jOOQでコード生成ができたので、次はFlywayでマイグレーション後にコード生成を試す。
環境
- jOOQ: 3.19.11
- Flyway: 9.22.3
- PostgreSQL: 15
Flywayの設定
以下は、Flywayでマイグレーションを行うための最低限の設定
build.gradle.kts
plugins {
kotlin("jvm")
id("org.jooq.jooq-codegen-gradle") version "3.19.11"
+ id("org.flywaydb.flyway") version "9.22.3"
}
jooq {
configuration {
generator {
// ...
database {
name = "org.jooq.meta.postgres.PostgresDatabase"
inputSchema = "public"
includes = ".*"
+ excludes = "flyway_schema_history" // 不要なので除外
}
}
}
}
+flyway {
+ driver = "org.postgresql.Driver"
+ url = "jdbc:postgresql://localhost:5432/postgres"
+ user = "postgres"
+ password = "password"
+ schemas = arrayOf("public")
+}
+tasks.named("jooqCodegen") {
+ // コード生成の前にマイグレーションを実施させる
+ dependsOn(tasks.named("flywayMigrate"))
+}
コード生成
以下のコマンドを実行して、Flywayのマイグレーション後にコードを生成が実行されることを確認する。
flywayMigrateが実行されていればOK。
$ ./gradlew jooqCodegen --dry-run
flywayMigrate SKIPPED
jooqCodegen SKIPPED
確認ができたら実際にコード生成を行う
$ ./gradlew jooqCodegen
マイグレーションファイルが変更されたときだけコード生成させる
Gradleのビルドキャッシュを利用することで、マイグレーションファイルが変更されたときだけコード生成させることができる。
buid.gradle.ktsに以下を追記する。
kotlin
tasks.named("jooqCodegen") {
dependsOn(tasks.named("flywayMigrate"))
+ // マイグレーションファイルのパスを指定
+ inputs.files(fileTree("src/main/resources/db/migration"))
}
次に--build-cacheオプションを指定してコード生成を行う。キャッシュが使われていることがログで確認できる。
$ ./gradlew jooqCodegen --build-cache
...
> Task jooqCodegen FROM-CACHE
Discussion