使用liquibase和gradle生成jooq

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

我想使用 liquibase 生成 jooq。我花了很多时间使用liquibase迁移生成jooq文件。

尝试使用官方网站jooq的说明。不成功

我缺少什么,需要补充什么?

我的 gradle 构建:

plugins {
    id("java")
    id("org.springframework.boot") version "3.3.5"
    id("io.spring.dependency-management") version "1.1.6"
    id("nu.studer.jooq") version "9.0"
}

group = "com.demo"
version = "0.0.1-SNAPSHOT"

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(21))
    }
}


repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.cloud:spring-cloud-starter-openfeign:4.1.4")
    implementation("org.jooq:jooq-meta-extensions-liquibase:3.19.15")

    compileOnly("org.projectlombok:lombok")
    runtimeOnly("org.postgresql:postgresql")
    annotationProcessor("org.projectlombok:lombok")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testRuntimeOnly("org.junit.platform:junit-platform-launcher")
    jooqGenerator("org.jooq:jooq-meta-extensions-liquibase:3.19.15")
    jooqGenerator("org.liquibase:liquibase-core:4.30.0")
    jooqGenerator("org.yaml:snakeyaml:1.28")
    jooqGenerator("org.slf4j:slf4j-jdk14:2.0.16")

}

jooq {
    configurations {
        create("main") {
            generateSchemaSourceOnCompilation.set(true)

            jooqConfiguration.apply {
                logging = org.jooq.meta.jaxb.Logging.WARN

                generator.apply {
                    name = "org.jooq.codegen.JavaGenerator"

                    target.apply {
                        packageName = "com.demo.db.generated"
                    }

                    database.apply {
                        name = "org.jooq.meta.extensions.liquibase.LiquibaseDatabase"

                        properties.add(
                                org.jooq.meta.jaxb.Property().withKey("scripts")
                                        .withValue("$rootDir/src/main/resources/db/changelog/db.changelog-master.xml")
                        )

                        properties.add(
                                org.jooq.meta.jaxb.Property().withKey("includeLiquibaseTables").withValue("false")
                        )
                    }
                }
            }
        }
    }
}

结果: 导致:liquibase.exception.ChangeLogParseException:在配置的搜索路径中找不到文件 /Users/user/IdeaProjects/demo/src/main/resources/db/changelog/db.changelog-master.xml: 可以使用“searchPath”参数添加更多位置。

gradle liquibase jooq
1个回答
0
投票

根据文档

// Specify the classpath location of your XML, YAML, or JSON script.
property {
    key = "scripts"
    value = "/database.xml"
}

类路径,而不是:

// Specify the root path, e.g. a path in your Maven directory layout
property {
    key = "rootPath"
    value = "${basedir}/src/main/resources"
}

// Specify the relative path location of your XML, YAML, or JSON script.
property {
    key = "scripts"
    value = "database.xml"
}

换句话说,当您打算使用文件系统配置时,您正在使用类路径配置。

© www.soinside.com 2019 - 2024. All rights reserved.