新的jooq/gradle配置不生成任何jooq类

新的jooq/gradle配置不生成任何jooq类,gradle,h2,jooq,Gradle,H2,Jooq,我得到了一个Ratpack应用程序,它使用gradle(v2.1.0)和jooq(v3.8.1)生成类文件 这是我的build.gradle文件: 我开始使用JooQAPI,并意识到我使用的是jooq的旧版本,所以我想切换到新的API 我尝试的第一件事就是将两个jooq引用从3.8.1更改为3.11.2。这导致了问题,因为jooq版本似乎改变了API,使得jooq配置不再工作: > startup failed: build file build.gradle': 72: unable

我得到了一个Ratpack应用程序,它使用gradle(v2.1.0)和jooq(v3.8.1)生成类文件

这是我的build.gradle文件:

我开始使用JooQAPI,并意识到我使用的是jooq的旧版本,所以我想切换到新的API

我尝试的第一件事就是将两个jooq引用从3.8.1更改为3.11.2。这导致了问题,因为jooq版本似乎改变了API,使得jooq配置不再工作:

> startup failed:
  build file build.gradle': 72: unable to resolve class Target 
   @ line 72, column 19.
           .withTarget(new Target()
                       ^

  build file build.gradle': 66: unable to resolve class Database 
   @ line 66, column 23.
             .withDatabase(new Database()
                           ^

  build file build.gradle': 65: unable to resolve class Generator 
   @ line 65, column 22.
           .withGenerator(new Generator()
                          ^

  etc.
jooq有一个gradle设置的示例,但我不明白它是如何工作的:。奇怪的是,该示例中的buildscript块不在顶部,从我在终端和联机中看到的情况来看,这是不允许的:

build.gradle': 24: only buildscript {} and other plugins {} script blocks are allowed before plugins {} blocks, no other statements are allowed
所以我不知道这个例子是如何工作的,除非它适用于与我不同的gradle版本(更早或更晚)

查看jooq gradle plugin()的文档,它有非常清晰的设置gradle脚本的步骤,因此我修改了build.gradle文件,如下所示:

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath "io.ratpack:ratpack-gradle:1.5.4"
    classpath "com.github.jengelman.gradle.plugins:shadow:1.2.3"
    classpath "mysql:mysql-connector-java:5.1.34"
    classpath 'com.h2database:h2:1.4.186'
    classpath 'nu.studer:gradle-jooq-plugin:3.0.1'
  }
}

plugins {
    id "com.github.michaelruocco.embedded-mysql-plugin" version "2.1.7"
}

apply plugin: 'nu.studer.jooq'
apply plugin: "io.ratpack.ratpack-java"
apply plugin: "com.github.johnrengelman.shadow"
apply plugin: "idea"

// db dump: mysqldump -P 3306 -h 127.0.0.1 -u embedded_user -ppassword --all-databases
def RDS_HOSTNAME = "localhost"
def RDS_PORT = 3306
def RDS_DB_NAME = "test"
def RDS_USERNAME = "embedded_user"
def RDS_PASSWORD = "password"

run {
    environment "RDS_HOSTNAME", RDS_HOSTNAME
    environment "RDS_PORT", RDS_PORT
    environment "RDS_DB_NAME", RDS_DB_NAME
    environment "RDS_USERNAME", RDS_USERNAME
    environment "RDS_PASSWORD", RDS_PASSWORD
}

repositories {
  jcenter()
}

ext {
    ratpackPac4jVersion="2.0.0"
    ratpackVersion="1.5.1"
    pac4jVersion="2.1.0"
}

embeddedMysql {
    url = 'jdbc:mysql://' + RDS_HOSTNAME + ':' + RDS_PORT + "/" + RDS_DB_NAME
    username = RDS_USERNAME
    password = RDS_PASSWORD
    version = 'v5_7_latest'
}

dependencies {
     jooqRuntime 'com.h2database:h2:1.4.193'
}

jooq {
    String init = "$projectDir/src/main/resources/init.sql".replaceAll('\\\\', '/') 

  version = '3.11.2'
  edition = 'OSS'
  sample(sourceSets.main) {
    jdbc {
      driver = "org.h2.Driver" //'org.postgresql.Driver'
      url = "jdbc:h2:mem:todo;INIT=RUNSCRIPT FROM '$init'" //'jdbc:postgresql://localhost:5432/sample'
                  user = 'sa'
            password = ''
    }
    generator {
      name = 'org.jooq.codegen.DefaultGenerator'
      database {
        name = 'org.jooq.meta.h2.H2Database'
        includes = '.*'
        excludes = ''
        inputSchema = 'public'
      }
      generate {
        relations = true
        deprecated = false
        records = true
        immutablePojos = true
        fluentSetters = true
      }
      target {
        directory = "$projectDir/src/main/auto_generated"
        packageName = 'jooq'
      }
    }
  }
}

run.dependsOn startEmbeddedMysql

dependencies {
    runtime "org.slf4j:slf4j-simple:1.7.25"

    compile "org.pac4j:ratpack-pac4j:${ratpackPac4jVersion}"
    compile "io.ratpack:ratpack-groovy:${ratpackVersion}"
    compile "io.ratpack:ratpack-test:${ratpackVersion}"
    compile "org.pac4j:pac4j-core:${pac4jVersion}"
    compile "org.pac4j:pac4j-oauth:${pac4jVersion}"
    compile "org.pac4j:pac4j-openid:${pac4jVersion}"
    compile "org.pac4j:pac4j-http:${pac4jVersion}"
    compile "org.pac4j:pac4j-gae:${pac4jVersion}"
    compile "org.pac4j:pac4j-oidc:${pac4jVersion}"
    compile "org.pac4j:pac4j-jwt:${pac4jVersion}"
    compile ratpack.dependency('hikari')
    compile "ch.qos.logback:logback-classic:1.0.13"
    compile group: 'io.ratpack', name: 'ratpack-thymeleaf', version: '1.4.0-rc-3'
    compile "mysql:mysql-connector-java:5.1.34"
    compile 'org.jooq:jooq'
    compile group: 'org.hibernate', name: 'hibernate-core', version: '5.3.2.Final'

}

mainClassName = "xyz.mealsahead.Main"
运行“gradlerun”工作正常,所以我假设它正在下载新版本的jooq,但现在我看不到生成的任何代码。我看到以下信息:

$ gradle generateSampleJooqSchemaSource 
:generateSampleJooqSchemaSource UP-TO-DATE
有人能告诉我我:

  • 我正在为此使用合适的gradle jooq插件吗
  • 是否错误配置了以前版本中的新生成器语法
关于jOOQ代码生成器的手动设置 事实上,由于jOOQ 3.12即将模块化,一些拆分包不得不重命名,即
org.jOOQ.util
包。在手动设置中,您需要从以下位置更改导入:

import org.jooq.util.jaxb.*
import org.jooq.util.*

关于您对第三方Gradle插件的使用 请注意,架构名称区分大小写,因此可能有助于替换此名称:

inputSchema = 'public'
由此

inputSchema = 'PUBLIC'

您之前已经做对了:
。withInputSchema(“PUBLIC”)

就是外壳!非常感谢你。我现在需要仔细阅读这个函数,以便理解它,但我很欣赏这个简单的修复。实际上,我从一个示例中复制了粘贴并注意到了它,但我认为这并不重要,因为我从一个示例中提取了它。@voodoogiant:“实际上从一个示例中复制了粘贴并注意到了它,但我认为这不重要,因为我从一个示例中提取了它”,是的,PostgreSQL报告不区分大小写的名称作为小写,其他数据库将它们报告为大写:-/
inputSchema = 'public'
inputSchema = 'PUBLIC'