我撰寫了一個 gradle 任務來從 postgresql 測驗容器生成 jooq 模型。啟動容器后,我使用 flyway 和 jooq 運行遷移GenerationTool。
我的相關部分build.gradle.kts如下所示:
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath("org.jooq:jooq-codegen:3.17.4")
classpath("org.postgresql:postgresql:42.5.0")
classpath("org.testcontainers:postgresql:1.17.3")
classpath("org.flywaydb:flyway-core:9.3.0")
}
}
task("jooqGenerate") {
doLast {
PostgreSQLContainer<Nothing>("postgres:14.3")
.apply { start() }
.use { pgContainer ->
val flyway = Flyway(
FluentConfiguration()
.locations("filesystem:src/main/resources/db/migration")
.baselineOnMigrate(true)
.dataSource(pgContainer.jdbcUrl, pgContainer.username, pgContainer.password)
)
flyway.migrate()
GenerationTool.generate(
Configuration()
.withJdbc(
Jdbc()
.withDriver(pgContainer.driverClassName)
.withUrl(pgContainer.jdbcUrl)
.withUser(pgContainer.username)
.withPassword(pgContainer.password)
)
.withGenerator(
Generator()
.withDatabase(Database().withInputSchema("public"))
.withGenerate(Generate().withPojosAsKotlinDataClasses(true))
.withTarget(
Target()
.withPackageName("co.selim.nemrut.jooq")
.withDirectory("src/main/java")
)
)
)
}
}
}
當我運行時,./gradlew jooqGenerate我可以看到 flyway 找到了遷移并運行它們,jooq 記錄了一堆警告,但沒有在src/main/java. 我錯過了什么?
我還在這里創建了一個復制器:https ://github.com/wowselim/nemrut
uj5u.com熱心網友回復:
原來官方檔案中的目標配置對我不起作用。
當我添加projectDir前綴時,它開始作業。
Target()
.withPackageName("co.selim.nemrut.jooq")
.withDirectory("${projectDir}/src/main/java")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/509872.html
