簡體   English   中英

如何使用 liquibase 設置 jooq-codegen-maven 插件的 postgres 方言且沒有數據庫連接屬性

[英]How can i setup the postgres dialect of jooq-codegen-maven plugin with liquibase and without db connection properties

我使用 liquibase 和 jooq,我需要直接從 liquibase xml 文件生成我的 pojo,但是我在用 Postgres 覆蓋默認的“H2”方言時遇到了問題。 實際上,我嘗試通過插件“配置”部分中的屬性設置方言,但它仍然使用 H2。 有人可以問我,在閱讀 xml 文件和生成 java 類時,我怎樣才能讓 jooq 使用 postgres 方言。

這是使用的庫版本

<properties>
    <jooq.version>3.13.4</jooq.version>
    <vertx-jooq.version>5.1.1</vertx-jooq.version>
    <postgres.version>42.2.12</postgres.version>
 </properties>

這是我的插件配置

<plugin>
    <groupId>org.jooq</groupId>
    <artifactId>jooq-codegen-maven</artifactId>
    <version>${jooq.version}</version>
    <executions>
      <execution>
        <id>jooq-generate</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>generate</goal>
        </goals>
      </execution>
    </executions>
    <dependencies>
      <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgres.version}</version>
      </dependency>
      <dependency>
        <groupId>io.github.jklingsporn</groupId>
        <artifactId>vertx-jooq-generate</artifactId>
        <version>${vertx-jooq.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-core</artifactId>
        <version>3.3.9</version>
      </dependency>
      <dependency>
      <groupId>org.jooq</groupId>
      <artifactId>jooq-meta-extensions</artifactId>
      <version>${jooq.version}</version>
    </dependency>
    </dependencies>
    <configuration>
      <generator>
        <name>io.github.jklingsporn.vertx.jooq.generate.classic.ClassicReactiveVertxGenerator</name>
        <database>
          <name>org.jooq.meta.extensions.liquibase.LiquibaseDatabase</name>
          <properties>
            <property>
              <key>scripts</key>
              <value>src/main/resources/liquibase/tenant/changelog.xml</value>
            </property>
            <property>
              <key>changeLogParameters.contexts</key>
              <value>!test</value>
            </property>
            <-- unfortunately this property doesn't work -->
            <property>
              <key>dialect</key>
              <value>POSTGRES</value>
            </property>
          </properties>
          <outputSchemaToDefault>true</outputSchemaToDefault>
          <unsignedTypes>false</unsignedTypes>
          <forcedTypes />
        </database>
        <generate>
          <daos>true</daos>
          <fluentSetters>true</fluentSetters>
        </generate>
        <target>
          <packageName>org.folio.rest.jooq</packageName>
        </target>
        <strategy>
          <name>io.github.jklingsporn.vertx.jooq.generate.VertxGeneratorStrategy</name>
        </strategy>
      </generator>
    </configuration>
  </plugin>

從 jOOQ 3.14 開始,jOOQ 代碼生成器的org.jooq.meta.extensions.liquibase.LiquibaseDatabase數據源在幕后使用 H2 來模擬遷移,而不是在目標數據庫上實際運行遷移。 這允許在沒有實際數據庫實例和連接的情況下使用 jOOQ 和您的 liquibase 遷移腳本。 將來,可以使用測試容器透明地啟動 PostgreSQL 實例: https://github.com/jOOQ/jOOQ/issues/6551

這是一個如何設置它的示例: https://github.com/jOOQ/jOOQ/tree/main/jOOQ-examples/jOOQ-testcontainers-example (不太難)

如果您希望使用實際的 PostgreSQL 數據庫,只需在運行 jOOQ 代碼生成之前使用 liquibase maven 插件運行 liquibase 遷移,兩者都連接到同一數據庫服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM