Eirik
Eirik

Reputation: 21

How to perform a Jooq code re-generation?

I'm using Jooq and gradle-jooq-plugin for code generation. It works fine, but I'm having a problem getting the generated code to update when a table is added or a column is dropped. I was able to force an update by changing the "packageName" config parameter and build a new package. And by going back to the original name the code was updated as expected.

What would be the correct way to re-generate code after schema change with my setup?

jooq {
version = '3.13.1'
edition = 'OSS'
generateSchemaSourceOnCompilation = true
sample(sourceSets.main) {
    jdbc {
        driver = 'org.postgresql.Driver'
        url = 'jdbc:postgresql://0.0.0.0:5432/victor'
        user = 'postgres'
        password = 'docker'
        properties {
            property {
                key = 'ssl'
                value = 'false'
            }
        }
    }
    generator {
        name = 'org.jooq.codegen.DefaultGenerator'
        strategy {
            name = 'org.jooq.codegen.DefaultGeneratorStrategy'
        }
        database {
            name = 'org.jooq.meta.postgres.PostgresDatabase'
            inputSchema = 'public'
            forcedTypes {
                forcedType {
                    name = 'varchar'
                    expression = '.*'
                    types = 'INET'
                }
            }
        }
        generate {
            relations = true
            deprecated = false
            records = true
            immutablePojos = true
            fluentSetters = true
        }
        target {
            packageName = 'net.bravo.victor.model'
            directory = 'src/'
        }
    }
}

I'm using https://github.com/etiennestuder/gradle-jooq-plugin

plugins {
    id 'nu.studer.jooq' version '4.1'
}

Upvotes: 0

Views: 1119

Answers (1)

Jaroslav Kuboš
Jaroslav Kuboš

Reputation: 683

I am not sure whether it is correct way but for me works this:

generateNavigoJooqSchemaSource {
    dependsOn cleanGenerateNavigoJooqSchemaSource
}

task buildJooq(dependsOn: generateNavigoJooqSchemaSource)

So I have created task name (buildJooq) I can remember that depends on generate task (generateNavigoJooqSchemaSource) and that depends on clean (cleanGenerateNavigoJooqSchemaSource) task.

Previously I have used this code which works too:

tasks.named("generateNavigoJooqSchemaSource").configure {
    outputs.upToDateWhen { false }
}

It also forces run every time.

Upvotes: 0

Related Questions