kotlin - 使用 jooq 和 gradle-jooq-plugin (kotlin) 生成代码
问题描述
我正在尝试将 jooq 与 gradle (kotlin) 一起使用。来源:gradle-jooq-plugin
我从昨天开始就在尝试,现在我没有任何资源可看。
我认为我做的不对,因为我是 kotlin 的新手。但是这些例子对我也不起作用(我知道插件的解释很好,例子很简单..)
如果你们中的任何人能把我带到我犯错的地方,我非常感激,因为我很好奇。
以下是我的build.gradle
文件的片段。我正在使用 Junit 5 进行测试(如果它有任何影响,我想不会)
import nu.studer.gradle.jooq.JooqEdition
plugins {
java
jacoco // test coverage and reports
id("org.springframework.boot") version "2.2.6.RELEASE"
id("org.sonarqube") version "2.8"
id("nu.studer.jooq") version "4.1"
id("java-library")
`kotlin-dsl`
}
apply(plugin = "io.spring.dependency-management")
apply(plugin = "nu.studer.jooq")
dependencies {
apply(plugin = "nu.studer.jooq")
// ### Spring ###
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-jdbc")
implementation("org.springframework.boot:spring-boot-starter-jooq")
compileOnly("org.springframework.boot:spring-boot-starter-actuator")
// ### Database ###
implementation("org.postgresql:postgresql:42.2.11")
implementation("org.liquibase:liquibase-core:3.8.8")
implementation("org.jooq:jooq")
jooqRuntime("postgresql:postgresql:9.1-901.jdbc4")
}
ext {
jooq.version = "3.12.3"
}
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
jooq {
version = "3.12.3"
edition = JooqEdition.OSS
"sample"(sourceSets["main"]) {
}
}
我的问题
是"sample"(sourceSets["main"])
从这里。一个 gradle (kotlin) 示例。但我收到以下错误:
Expression '"sample"' of type 'String' cannot be invoked as a function. The function 'invoke()' is not found
解决方案
在您的 jooq 配置中,您使用的示例函数设置为string
而不是函数。
在此处查看文档:https ://github.com/etiennestuder/gradle-jooq-plugin
你应该有这个:
jooq {
version = '3.12.3'
edition = 'OSS'
generateSchemaSourceOnCompilation = true
sample(sourceSets.main) {
jdbc {
driver = 'org.postgresql.Driver'
url = 'jdbc:postgresql://localhost:5432/sample'
user = 'some_user'
password = 'secret'
properties {
property {
key = 'ssl'
value = 'true'
}
}
}
generator {
name = 'org.jooq.codegen.DefaultGenerator'
strategy {
name = 'org.jooq.codegen.DefaultGeneratorStrategy'
// ...
}
database {
name = 'org.jooq.meta.postgres.PostgresDatabase'
inputSchema = 'public'
forcedTypes {
forcedType {
name = 'varchar'
expression = '.*'
types = 'JSONB?'
}
forcedType {
name = 'varchar'
expression = '.*'
types = 'INET'
}
}
// ...
}
generate {
relations = true
deprecated = false
records = true
immutablePojos = true
fluentSetters = true
// ...
}
target {
packageName = 'nu.studer.sample'
// directory = ...
}
}
}
}
顺便说一句,为了能够让 Jooq 生成您的代码,您必须向它提供与您的数据库的连接字符串。
推荐阅读
- java - org.postgresql.util.PSQLException - 2019
- angular - 如何在 Angular 中“扩展”和包装自定义组件或原生元素?(带有反应示例)
- python - Keras 的 model.predict 可以返回字典吗?
- three.js - 在 three.js / proctree.js 中正确缩放纹理
- docker - Docker 容器在 docker compose 中无法看到彼此,主机也无法看到
- azure - Azure 服务总线主题订阅 REST API
- automated-tests - JSON 字符串中的 Loadrunner 参数
- javascript - 签入 Nuxt Asyncdata 后重定向
- python - 从纳斯达克生成的图像中抓取数据
- html - 尝试将表单嵌入 Avada 主题 wordpress 网站;出现错误:'表单无法加载。请再试一次。'