gradle - JOOQ 代码生成给出错误 <generator/> 标签是强制性的

标签 gradle build.gradle vert.x jooq

我正在尝试将 JOOQ 与最新版本 4.0.0 的 vertx 一起使用。我想通过gradle生成我的Daos和表。以下是我的 build.gradle 代码

buildscript {
    ext {
        vertx_jooq_version = '4.0.0'
        postgresql_version = '42.2.2'
    }
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "io.github.jklingsporn:vertx-jooq-generate:$vertx_jooq_version"
        classpath "org.postgresql:postgresql:$postgresql_version"
    }
}

import groovy.xml.MarkupBuilder
import org.jooq.util.GenerationTool

import javax.xml.bind.JAXB

group 'your group id'
version 'your project version'

apply plugin: 'java'

dependencies {
    compile "io.github.jklingsporn:vertx-jooq-classic:$vertx_jooq_version"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

task jooqGenerate {
    doLast() {
        def writer = new StringWriter()
        new MarkupBuilder(writer)
                .configuration('xmlns': 'http://www.jooq.org/xsd/jooq-codegen-3.10.0.xsd') {
            jdbc {
                driver('org.postgresql.Driver')
                url('jdbc:postgresql://IP:PORT/DATABASE')
                user('YOUR_USER')
                password('YOUR_PASSWORD')
            }
            generator {
                name('io.github.jklingsporn.vertx.jooq.generate.classic.ClassicJDBCVertxGenerator')
                database {
                    name('org.jooq.meta.postgres.PostgresDatabase')
                    include('.*')
                    excludes('schema_version')
                    inputSchema('public')
                    includeTables(true)
                    includeRoutines(true)
                    includePackages(false)
                    includeUDTs(true)
                    includeSequences(true)
                }
                generate([:]) {
                    deprecated(false)
                    records(false)
                    interfaces(true)
                    fluentSetters(true)
                    pojos(true)
                    daos(true)
                }
                target() {
                    packageName('io.one.sys.db')
                    directory("$projectDir/src/main/java")
                }
                strategy {
                    name('io.github.jklingsporn.vertx.jooq.generate.VertxGeneratorStrategy')
                }
            }
        }
        GenerationTool.generate(
                JAXB.unmarshal(new StringReader(writer.toString()), org.jooq.meta.jaxb.Configuration.class)
        )
    }
}

取自 github 链接 https://github.com/jklingsporn/vertx-jooq/tree/master/vertx-jooq-classic-jdbc

但是当我运行命令 ./gradlew jooqGenerate 时生成代码,它给出错误: The <generator/> tag is mandatory. For details, see http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd

我检查了org.jooq.codegen.GenerationTool在 JOOQ 代码生成库中。以下是代码

 org.jooq.meta.jaxb.Generator g = configuration.getGenerator();
            if (g == null)
                throw new GeneratorException("The <generator/> tag is mandatory. For details, see " + Constants.NS_CODEGEN);

链接:https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java

似乎是configuration.getGenerator()中的问题;

以下是 org.jooq.meta.jaxb.Generator 文件的链接 https://github.com/jOOQ/jOOQ/blob/master/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java

我看到以下方法

public Generator withGenerate(Generate value) {
        setGenerate(value);
        return this;
    }

public void setGenerate(Generate value) {
        this.generate = value;
    }

我无法进一步了解谁应该调用 withGenerate() 方法来创建 Generator 对象。

谁能告诉我这里出了什么问题或者 jklingsporn 库有什么问题

最佳答案

终于明白了。 我必须更新网址 http://www.jooq.org/xsd/jooq-codegen-3.10.0.xsdhttp://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd由于xsd有不同的版本

关于gradle - JOOQ 代码生成给出错误 <generator/> 标签是强制性的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53650539/

相关文章:

android - Gradle - 选择性模块编译(否则重用 jar)

vert.x - Vertx Future 对象返回 null

android - 将 build.gradle 值设置为写入 xml 文件的值

android - 我遇到了 Android Manifest 合并问题,提示我更新到 26.1.0。我尝试了一下,它说该软件包不可用

thread-safety - vert.x 中的多实例 verticle 是线程安全的

quarkus - 以 react 方式协调多个传出请求

gradle - Gradle依赖项不符合我的期望

java - 如何在 Gradle 中正确设置额外属性?

intellij-idea - 使用Gradle时如何使IDEA/Android Studio识别我的单元测试文件夹?

spring - 如何排除 gradle 依赖项