我想使用 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”参数添加更多位置。
根据文档:
// 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"
}
换句话说,当您打算使用文件系统配置时,您正在使用类路径配置。