🦁

jOOQ公式Gradleプラグインを使ってコード生成

2024/08/31に公開

jOOQ 3.19から、公式のGradleプラグインが提供された。今回は、そのプラグインを使ってコード生成を試す。

https://www.jooq.org/doc/latest/manual/code-generation/codegen-gradle/

環境

  • jOOQ: 3.19.11
  • PostgreSQL: 15

Gradleの設定

以下は、jOOQを使用してコード生成を行うための最低限の設定。

kotlin
plugins {
    kotlin("jvm") version "2.0.10"
+    id("org.jooq.jooq-codegen-gradle") version "3.19.11"
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
+    implementation("org.jooq:jooq:3.19.11")
+    implementation("org.jooq:jooq-meta:3.19.11")
+    implementation("org.jooq:jooq-codegen:3.19.11")
+    implementation("org.jooq:jooq-postgres-extensions:3.19.11")
+    runtimeOnly("org.postgresql:postgresql:42.7.4")
+    jooqCodegen("org.postgresql:postgresql:42.7.4")
    testImplementation(kotlin("test"))
}

tasks.test {
    useJUnitPlatform()
}
kotlin {
    jvmToolchain(21)
}

+sourceSets.main {
+    java.srcDirs("build/generated-sources/jooq")
+}

+jooq {
+    configuration {
+
+        jdbc {
+            driver = "org.postgresql.Driver"
+            url = "jdbc:postgresql://localhost:5432/postgres"
+            user = "postgres"
+            password = "password"
+        }
+        generator {
+            database {
+                name = "org.jooq.meta.postgres.PostgresDatabase"
+                inputSchema = "public"
+                includes = ".*"
+            }
+
+            target {
+                packageName = "org.example.db"
+            }
+        }
+    }
+}

コード生成

以下のコマンドを実行して、コードを生成する

./gradlew :jooqCodegen

指定したパスにコードが生成されていることを確認する
デフォルトだと build/generated-sources に生成される

$ tree build/generated-sources
build/generated-sources
└── jooq
    └── org
        └── example
            └── db
                ├── DefaultCatalog.java
                ├── Keys.java
                ├── Public.java
                ├── Tables.java
                └── tables
                    ├── Users.java
                    └── records
                        └── UsersRecord.java

Discussion