Springboot、JOOQ、Flyway如何搭配使用?
How to use Spring boot, JOOQ and Flyway together?
那么,让我们考虑一个通用的Spring boot
应用程序,它使用JOOQ
进行数据库访问,使用Flyway
进行数据库迁移。该项目使用 gradle
进行依赖管理。
我想要以下东西:
- 运行 我的申请在 docker。所以,我只想在环境变量(https://12factor.net/config)中使用。因此,我不知道如何配置 both spring 启动应用程序属性(数据库登录名和密码)和 gradle JOOQ 插件数据库登录名和密码。
- 自动生成JOOQ类。 Flyway 迁移在应用程序启动时运行。但是 JOOQ 在
gradle build
任务中生成代码。所以,我们看到任务执行顺序错误。
我有一个非常相似的设置,但需要手动操作来生成 Jooq 类。
我需要它们进行开发,所以将生成延迟到目标环境对我来说没有意义。
我决定 运行 本地 dB 用于开发目的。
我运行它在docker,但这是整个设置中的一个细节。
当我有一个新的迁移时,我 运行 它使用 flyway grade 插件针对本地 dB。然后我用等级 Jooq 插件重新生成 Jooq 类。
当应用程序部署在目标环境中时,我依赖 flyway 在启动时 运行 迁移。我已经打包了匹配的 Jooq 类,所以一切都很顺利。
jOOQ GitHub 项目有一个 example project 将 jOOQ 与 Spring 引导和 sql-maven-plugin
.
结合使用
您可以轻松地用 Flyway 插件替换 sql-maven-plugin
,如 jOOQ/Flyway example project or this blog post 中所示。
在相关说明中,如果您将 jOOQ 的商业发行版之一与 Spring Boot 一起使用,请参阅 in this blog post here。
有以下gradle任务,需要flyway、otj-pg-embedded、jooq和postgresql驱动:
import com.opentable.db.postgres.embedded.*
import org.flywaydb.core.*
import org.jooq.codegen.*
tasks.named("compileKotlin") {
doFirst {
//create embedded postgresql
EmbeddedPostgres.builder().setPort(5400).start().use {
//migrate embedded posrtgresql
Flyway.configure()
.locations("filesystem:$projectDir/migrations/")
.schemas("public")
.dataSource(it.postgresDatabase)
.load()
.migrate()
//generate jooq classes
GenerationTool.generate("some xml for jooq")
}
}
}
来源是https://gist.github.com/whyoleg/63195b60eb85e8fe2114b30f28b892ef
那么,让我们考虑一个通用的Spring boot
应用程序,它使用JOOQ
进行数据库访问,使用Flyway
进行数据库迁移。该项目使用 gradle
进行依赖管理。
我想要以下东西:
- 运行 我的申请在 docker。所以,我只想在环境变量(https://12factor.net/config)中使用。因此,我不知道如何配置 both spring 启动应用程序属性(数据库登录名和密码)和 gradle JOOQ 插件数据库登录名和密码。
- 自动生成JOOQ类。 Flyway 迁移在应用程序启动时运行。但是 JOOQ 在
gradle build
任务中生成代码。所以,我们看到任务执行顺序错误。
我有一个非常相似的设置,但需要手动操作来生成 Jooq 类。 我需要它们进行开发,所以将生成延迟到目标环境对我来说没有意义。
我决定 运行 本地 dB 用于开发目的。 我运行它在docker,但这是整个设置中的一个细节。
当我有一个新的迁移时,我 运行 它使用 flyway grade 插件针对本地 dB。然后我用等级 Jooq 插件重新生成 Jooq 类。
当应用程序部署在目标环境中时,我依赖 flyway 在启动时 运行 迁移。我已经打包了匹配的 Jooq 类,所以一切都很顺利。
jOOQ GitHub 项目有一个 example project 将 jOOQ 与 Spring 引导和 sql-maven-plugin
.
您可以轻松地用 Flyway 插件替换 sql-maven-plugin
,如 jOOQ/Flyway example project or this blog post 中所示。
在相关说明中,如果您将 jOOQ 的商业发行版之一与 Spring Boot 一起使用,请参阅 in this blog post here。
有以下gradle任务,需要flyway、otj-pg-embedded、jooq和postgresql驱动:
import com.opentable.db.postgres.embedded.*
import org.flywaydb.core.*
import org.jooq.codegen.*
tasks.named("compileKotlin") {
doFirst {
//create embedded postgresql
EmbeddedPostgres.builder().setPort(5400).start().use {
//migrate embedded posrtgresql
Flyway.configure()
.locations("filesystem:$projectDir/migrations/")
.schemas("public")
.dataSource(it.postgresDatabase)
.load()
.migrate()
//generate jooq classes
GenerationTool.generate("some xml for jooq")
}
}
}
来源是https://gist.github.com/whyoleg/63195b60eb85e8fe2114b30f28b892ef