Генерация кода JOOQ дает ошибкутег обязателен - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь использовать JOOQ с vertx с последней версией 4.0.0.Я хочу создать свой Daos и таблицу через Gradle.Ниже приведен мой код 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 file 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

1 Ответ

0 голосов
/ 06 декабря 2018

Наконец-то понял.Мне пришлось обновить URL http://www.jooq.org/xsd/jooq-codegen-3.10.0.xsd до http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd Поскольку xsd имеет другую версию

...