Итак, давайте рассмотрим общее Spring boot приложение, которое использует JOOQ для доступа к базе данных и Flyway для миграции базы данных. Проект использует gradle для управления зависимостями.
Я хочу следующие вещи:
gradle build. Итак, мы видим неверный порядок выполнения задач.



У меня очень похожая установка, но я прибегал к ручному действию для создания классов Jooq. Мне они нужны для разработки, поэтому затягивать генерацию до целевой среды мне нет смысла.
Я решил запустить локальный дБ для целей разработки. Я запускаю его в докере, но это деталь всей настройки.
Когда у меня есть новая миграция, я запускаю ее с помощью плагина класса flyway против локального дБ. Затем я регенерирую классы Jooq с плагином Grade Jooq.
Когда приложение развертывается в целевой среде, я полагаюсь на flyway для запуска миграции при запуске. У меня есть соответствующие классы Jooq, поэтому все работает гладко.
Да, я коммичу их после добавления каждого файла миграции (и, честно говоря, меня это не беспокоит). Дополнительный дБ на локальном ПК — это немного больно, но я научился с этим жить.
Спасибо. Су, ты мне почти нравишься. Я подумал, что есть еще какой-нибудь классный способ.
Я был бы рад найти лучший, поэтому, пожалуйста, поделитесь в этой теме, если вам случится найти его.
Я слежу за этим github.com/jOOQ/jOOQ/issues/6551#issuecomment-481305842
если вы используете gradle, вы также можете использовать: github.com/ayedo/jooq-modelator
В проекте jOOQ GitHub есть пример проекта, который использует jOOQ с Spring Boot и sql-maven-plugin.
Вы можете легко заменить sql-maven-plugin плагином Flyway, как показано в пример проекта jOOQ/Flyway или этот пост в блоге.
В связи с этим, если вы используете один из коммерческих дистрибутивов jOOQ с Spring Boot, это задокументировано в этом сообщении в блоге здесь.
Существует следующая задача 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.
привет, я прав, что вы передаете классы JOOQ в git?