我已经修改了文档,但文档相对不清楚如何将生成的 JOOQ 文件作为其项目的一部分。生成文件时,我发现该项目无法编译,因为它找不到生成的类。除了“确保它在你的类路径中”之外,我在文档中找不到明确的指导。
我在一个全新的项目中使用 jooq-codegen-gradle 插件,并且我设法使用 sourceSets 解决了这个问题,但我不确定这是否是正确的方法。我正在附加我的 Gradle 构建文件(这里没有 Gradle 大师)。希望对其进行修改并了解是否应该使用另一种方法来代替 sourceSets。
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "3.2.5"
id("io.spring.dependency-management") version "1.1.4"
kotlin("jvm") version "1.9.23"
kotlin("plugin.spring") version "1.9.23"
id("org.jooq.jooq-codegen-gradle") version "3.19.7"
}
group = "org.example"
version = "0.0.1-SNAPSHOT"
java {
sourceCompatibility = JavaVersion.VERSION_17
}
jooq {
configuration {
jdbc {
driver = "org.postgresql.Driver"
url = "jdbc:postgresql://localhost:5432/timeline"
user = "postgres"
password = "postgres"
}
generator {
database {
name = "org.jooq.meta.postgres.PostgresDatabase"
inputSchema = "public"
}
target {
packageName = "org.example.jooqscratch.generated"
directory = "build/generated-src/jooq/main"
}
}
}
}
repositories {
mavenCentral()
}
sourceSets {
this.main{
kotlin.srcDir("${layout.buildDirectory.get()}/generated-src/jooq/main")
}
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-jooq")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
runtimeOnly("org.postgresql:postgresql")
testImplementation("org.springframework.boot:spring-boot-starter-test")
implementation("org.flywaydb:flyway-core:10.12.0")
implementation("org.flywaydb:flyway-database-postgresql:10.12.0")
jooqCodegen("org.postgresql:postgresql")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs += "-Xjsr305=strict"
jvmTarget = "17"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
尝试修改文档以找到清晰的路径。尝试在全新项目上使用最新版本,以确保一切都保持一致。尝试检查配置。
添加此:
tasks.named("compileKotlin") {
dependsOn(tasks.filter { it.name.startsWith("jooqCodegen") }.toTypedArray())
}