我想使用 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”参数添加更多位置。
我也尝试添加:
properties.add(
org.jooq.meta.jaxb.Property().withKey("rootPath")
.withValue("$rootDir/src/main/resources/db/changelog")
)
结果:原因:liquibase.exception.ChangeLogParseException:在配置的搜索路径中未找到文件 /Users/user/IdeaProjects/demo/src/main/resources/db/changelog/db.changelog-master.xml:- /Users/user/IdeaProjects/demo/src/main/resources/db/changelog 可以使用“searchPath”参数添加更多位置。
根据文档:
即classpath,而不是:
换句话说,当您想使用文件系统配置时,却使用了类路径配置。