Как сделать правильный автогенератор jooq и последовательность миграции liquibase?

Как заставить автоматический генератор jooq работать с использованием сценария liquibase, а затем выполнить миграцию liquibase при запуске весенней загрузки вместо чистой компиляции mvn?

Я хочу, чтобы автоматический генератор jooq работал на основе схемы liquibase, а затем я хочу, чтобы миграция liquibase запускалась при запуске весенней загрузки, но в настоящее время он работает при запуске mvn clean compile. Я хочу, чтобы такие журналы, как «Приобретенная блокировка изменений», появлялись после запуска приложения, а не при чистой компиляции mvn.

Это выдержка из pom.xml:

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>3.4.1</version>
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <configuration>
                <propertyFile>src/main/resources/liquibase.properties</propertyFile>
                <changeLogFile>src/main/resources/liquibase-outputChangeLog.xml</changeLogFile>
                <driver>org.postgresql.Driver</driver>
            </configuration>
            <goals>
                <goal>update</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.jooq</groupId>
    <artifactId>jooq-codegen-maven</artifactId>
    <version>3.13.4</version>
    <executions>
        <execution>
            <phase>process-resources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>

    <dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.12</version>
        </dependency>
    </dependencies>
    <configuration xmlns = "http://www.jooq.org/xsd/jooq-codegen-3.16.3.xsd">
        <jdbc>
            <driver>org.postgresql.Driver</driver>
            <url>${spring.datasource.url}</url>
            <user>${spring.datasource.username}</user>
            <password>${spring.datasource.password}</password>
        </jdbc>
        <generator>
            <database>
                <name>org.jooq.meta.postgres.PostgresDatabase</name>
                <includes>.*</includes>
                <excludes></excludes>
                <inputSchema>public</inputSchema>
            </database>
            <target>
                <packageName>com.slb.pps.azure.jooqGenerated</packageName>
                <directory>target/generated-sources/jooq</directory>
            </target>
        </generator>
    </configuration>
</plugin>

Пожалуйста, помогите мне отладить это. Дайте мне знать, если потребуется какая-либо другая информация.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша конфигурация Maven полезна в ваших средах разработки и сборки, где вы зависите от действующей базы данных и подключения к базе данных для:

  • Генерация кода jOOQ
  • Строительство
  • Интеграционное тестирование (я подозреваю?)

Но это отличается от использования вашей производственной базы данных, где вам, вероятно, лучше запускать Liquibase программно, встроенную в ваше приложение. Это не единственный вариант запуска рабочей миграции, но я бы рекомендовал его. Вот официальный ресурс по этой теме от Liquibase, который поможет вам принять обоснованное решение: https://www.liquibase.com/blog/3-ways-to-run-liquibase

А вот еще один ресурс, показывающий, как использовать генерацию кода jOOQ вместе с тестовыми контейнерами вместо живой базы данных, что может помочь лучше разделить проблемы сборки и производства: https://blog.jooq.org/using-testcontainers-to-generate-jooq-code/

Другие вопросы по теме