我正在尝试将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
我在JOOQ代码源库中检查了org.jooq.codegen.GenerationTool
。以下是代码
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库是否有问题
答案 0 :(得分:2)
最后知道了。 由于xsd版本不同,我不得不将网址http://www.jooq.org/xsd/jooq-codegen-3.10.0.xsd更新为http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd