当前位置: 首页 > 知识库问答 >
问题:

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

全冥夜
2023-03-14

如何使jooq自动生成器使用liquibase脚本运行,然后在Spring启动时迁移liquibase,而不是mvn干净编译?

我希望 jooq 自动生成器在 liquibase 模式上运行,然后我希望 liquibase 迁移在 spring 启动启动时运行,但目前它在运行 mvn 干净编译时运行。我希望像“获取的更改锁”这样的日志在应用程序启动后出现,而不是在 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>

请帮我调试这个。如果需要其他信息,请告诉我。

共有1个答案

傅乐湛
2023-03-14

Maven 配置在开发和构建环境中非常有用,在这些环境中,您依赖于实时数据库和数据库连接来执行以下操作:

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

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

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

 类似资料:
  • 我试图在命令提示符下执行命令:

  • 如果要使用相同的变量但值不同,如何替换下一个更改集的标记值。实例 这个例子只适用于第一次和第二次 设置或运行Liquibase时出错:Liquibase。例外设置例外:液化。例外SetupException:分析/patches/translate\me的第150行第67列时出错。xml:cvc复杂类型。2.4.a: 发现以元素“property”开头的内容无效。“{”之一http://www.l

  • 我有一套序列模型。我想使用迁移,而不是数据库同步。 根据这篇文章,Sequelize CLI似乎能够做到这一点:“当您使用CLI生成模型时,您还可以免费获得迁移脚本。” 如何使用Sequelize CLI从现有的Sequelize模型中自动生成迁移?

  • 问题内容: 我正在使用Alembic处理Flask的迁移。理论上,应该基于数据库中的更改自动生成迁移。但是,Alembic仅使用上述命令即可生成空白迁移。 有一个与此问题非常相似的问题,即问题是没有导入正确的模型。但是,我已经从我的Flask应用程序导入了模型,如下所示: 以及中导入的数据库元数据env.py(“ start”是我的Flask应用程序主文件的名称): 运行,alembic revi

  • 我使用的项目使用JOOQ及其生成器从Postgres数据库生成类。数据库进化由播放进化管理。我们还使用git作为版本控制系统。当从git获取新的evolutions/jooq代码时,这组工具会导致某种自引用问题: 由于缺少从这些表中生成的类而导致编译问题,因此无法应用由其他团队成员创建的新表的演变。 我在考虑以下解决方案: 应用sbt的演变-创建sbt任务-到目前为止未能实现, 堆栈: PlayF

  • 我试图为我的MySql数据库自动生成jOOQ java代码,但它不起作用。我在maven的JSP项目中使用jOOQ。 xml 我正在使用Tomcat在eclipse上运行这个项目。当我想运行Web应用程序时,我会清理项目,然后清理项目 当我运行该项目时,并没有生成数据库的java代码<正如文档中所说,由于我在jOOQ中使用maven,因此我可以自动生成JAVA代码,而无需使用cli。无需创建库。x