首页 > 解决方案 > 如何执行 Jooq 代码重新生成?

问题描述

我正在使用 Jooq 和 gradle-jooq-plugin 进行代码生成。它工作正常,但是在添加表或删除列时更新生成的代码时遇到问题。我能够通过更改“packageName”配置参数来强制更新并构建一个新包。通过返回原始名称,代码按预期更新。

使用我的设置更改架构后重新生成代码的正确方法是什么?

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/'
        }
    }
}

我正在使用https://github.com/etiennestuder/gradle-jooq-plugin

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

标签: jooq

解决方案


我不确定这是否正确,但对我来说是这样的:

generateNavigoJooqSchemaSource {
    dependsOn cleanGenerateNavigoJooqSchemaSource
}

task buildJooq(dependsOn: generateNavigoJooqSchemaSource)

所以我创建了任务名称(buildJooq),我记得这取决于生成任务(generateNavigoJooqSchemaSource)并且取决于清理(cleanGenerateNavigoJooqSchemaSource)任务。

以前我也使用过这个代码:

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

它也强制每次运行。


推荐阅读