我正在尝试将 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);
似乎是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.xsd至http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd由于xsd有不同的版本
关于gradle - JOOQ 代码生成给出错误 <generator/> 标签是强制性的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53650539/