I'm trying to use the jooq-codegen-gradle
plugin to generate jooq code by reversing engineering sql files (Flyway migrations files). This is how my build.gradle.kts
file (only relevant parts) looks like:
...
plugins {
kotlin("jvm")
application
id("org.springframework.boot") version "3.3.0"
id("org.jooq.jooq-codegen-gradle")
}
...
jooq {
configuration {
// Code generation from SQL files (https://www.jooq.org/doc/latest/manual/code-generation/codegen-ddl/)
generator {
database {
name = "org.jooq.meta.extensions.ddl.DDLDatabase"
properties {
property {
key = "scripts"
value = "src/main/resources/db/migrations/*.sql"
}
property {
key = "sort"
value = "flyway"
}
}
}
}
}
}
...
tasks.compileTestKotlin {
dependsOn += tasks.jooqCodegen
}
...
apply(plugin = "io.spring.dependency-management")
val jooqVersion = the<io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension>().managedVersions["org.jooq:jooq"]!!
dependencies {
...
// Database
implementation("org.springframework.boot:spring-boot-starter-jooq")
implementation("org.jooq:jooq-meta-extensions:$jooqVersion")
implementation("org.postgresql:postgresql")
implementation("org.flywaydb:flyway-core")
implementation("org.flywaydb:flyway-database-postgresql")
...
}
however ./gradlew build --console=plain
fails with:
Execution failed for task ':app:jooqCodegen'.
> java.lang.ClassNotFoundException: Your configured database type was not found: org.jooq.meta.extensions.ddl.DDLDatabase. This can have several reasons:
- You want to use a commercial jOOQ Edition, but you pulled the Open Source Edition from Maven Central.
- You have mis-typed your class name.
DDLDatabase
is clearly on the classpath:
Therefore the error is not very useful and it is not clear to me what I'm missing...
jooqCodegen("org.jooq:jooq-meta-extensions:$jooqVersion")
should be used instead of
implementation("org.jooq:jooq-meta-extensions:$jooqVersion")