Kotlin 项目中 jooq-codegen-gradle 的配置

问题描述 投票:0回答:1

我已经修改了文档,但文档相对不清楚如何将生成的 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()
}

尝试修改文档以找到清晰的路径。尝试在全新项目上使用最新版本,以确保一切都保持一致。尝试检查配置。

spring database spring-boot orm jooq
1个回答
0
投票

添加此:

tasks.named("compileKotlin") {
    dependsOn(tasks.filter { it.name.startsWith("jooqCodegen") }.toTypedArray())
}
© www.soinside.com 2019 - 2024. All rights reserved.