如何使 jooq 自动生成器和 liquibase 迁移顺序正确?

How to make jooq auto generator and liquibase migration sequence correct?

如何使用 liquibase 脚本将 jooq 自动生成器设为 运行,然后在 spring 引导启动时迁移 liquibase 而不是 mvn clean compile?

我希望 jooq 自动生成器在 liquibase 模式的基础上 运行 然后我希望 liquibase 在 spring 启动时迁移到 运行 但目前它 运行s在 运行ning mvn clean 编译。 我希望在应用程序启动后而不是在 mvn clean compile 上出现“获取的更改锁”之类的日志。

这是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>

请帮我调试一下。如果需要任何其他信息,请告诉我。

您的 Maven 配置在您的开发和构建环境中很有用,在这些环境中您依赖于实时数据库和数据库连接:

  • jOOQ代码生成
  • 建筑物
  • 集成测试(我怀疑?)

但这与您的生产数据库使用情况不同,您最好以编程方式 运行ning Liquibase,将其嵌入到您的应用程序中。这不是 运行 生产迁移的唯一选择,但我会推荐。这是 Liquibase 提供的有关该主题的官方资源,可帮助您做出明智的决定: https://www.liquibase.com/blog/3-ways-to-run-liquibase

这是另一个资源,展示了如何使用 jOOQ 的代码生成和测试容器,而不是实时数据库,这可能有助于更好地分离构建和生产问题: https://blog.jooq.org/using-testcontainers-to-generate-jooq-code/