Gradle Java Spring boot project with Jooq JPADatabase does not detect entities

Viewed 722

I am trying to generate jOOQ (v.3.14.8) classes from JPA-annotated entities (@Entity) in a Gradle Spring Boot (v.2.4.3) project with the nu.studer.jooq plugin (v.5.2.1) and the JPADatabase as database.

Whenever I run ./gradlew generateJooq no files are generated in the target folder with the following INFO:

INFO: No modified files: This code generation run has not produced any file modifications.
This means, the schema has not changed, and no other parameters (jOOQ version, driver version, database version,
and any configuration elements) have not changed either.

In automated builds, it is recommended to prevent unnecessary code generation runs. This run took: 283.126ms
Possible means to prevent this:
- Use manual code generation and check in generated sources: https://www.jooq.org/doc/latest/manual/code-generation/codegen-version-control/
- Use schema version providers: https://www.jooq.org/doc/latest/manual/code-generation/codegen-advanced/codegen-config-database/codegen-database-version-providers/
- Use gradle tasks and inputs: https://github.com/etiennestuder/gradle-jooq-plugin/blob/master/README.md
Mar 12, 2021 3:35:02 PM org.jooq.tools.JooqLogger info
INFO: Removing excess files    

BUILD SUCCESSFUL in 2s

It looks to me like the entities are not being picked up.

Here is my build.gradle file:

plugins {
    id 'org.springframework.boot' version '2.4.3'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'nu.studer.jooq' version '5.2.1'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation('org.springframework.boot:spring-boot-starter-jooq') 
    
    runtimeOnly 'com.h2database:h2'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    jooqGenerator 'org.jooq:jooq-meta-extensions-hibernate'
}

test {
    useJUnitPlatform()
}

jooq {
    // version = dependencyManagement.importedProperties['jooq.version'] // use jOOQ version defined in Spring Boot
    version = '3.14.8'  // specify jOOQ version
    configurations {
        main {
            generationTool {
                // logging = org.jooq.meta.jaxb.Logging.WARN
                generator {
                    name = 'org.jooq.codegen.DefaultGenerator'
                    strategy.name = 'org.jooq.codegen.DefaultGeneratorStrategy'
                    database {
                        name = 'org.jooq.meta.extensions.jpa.JPADatabase'
                        properties {
                            property {
                                key = 'packages'
                                value = 'com.example.jooq.entities'
                            }
                            property {
                                key = 'useAttributeConverters'
                                value = true
                            }
                        }
                    }
                    target {
                        packageName = 'com.example.jooq.generated.jooq.entities'
                        directory = 'target/generated-sources/jooq'
                    }
                }
            }
        }
    }
}

The sample code for this implementation can be found here.

Thanks for your help already, really appreciate.

0 Answers
Related