7.5. Flyway + jOOQ codegen統合ビルドフロー
7.5.1. ビルド順序
┌─────────────────────────────────────────────────────────┐
│ mvn compile │
└──────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────┐
│ flyway:migrate │ ① DBスキーマ適用
└────────┬────────┘
│
▼
┌─────────────────┐
│ jooq:generate │ ② Javaコード生成
└────────┬────────┘
│
▼
┌─────────────────┐
│ compile │ ③ コンパイル
└─────────────────┘7.5.2. Maven実行順序設定
pom.xmlでプラグインの実行順序を<phase>と<execution>の順序で制御します。
xml
<build>
<plugins>
<!-- 第1段階:Flywayマイグレーション -->
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<executions>
<execution>
<id>flyway-migrate</id>
<phase>generate-sources</phase>
<goals>
<goal>migrate</goal>
</goals>
</execution>
</executions>
<!-- 設定省略([Flyway設定](/ja/backend/data/flyway-config)ドキュメントを参照してください) -->
</plugin>
<!-- 第2段階:jOOQコード生成 -->
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<executions>
<execution>
<id>jooq-codegen</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<!-- 設定省略([jOOQコード生成](/ja/backend/data/jooq-codegen)ドキュメントを参照してください) -->
</plugin>
</plugins>
</build>7.5.3. ローカル開発ワークフロー
- Docker ComposeでPostgreSQLを実行します。
- マイグレーションファイルを作成します(
src/main/resources/db/migration/)。 mvn generate-sourcesを実行してFlywayマイグレーション + jOOQ codegenを実行します。- 生成されたjOOQクラスを使用してRepositoryコードを作成します。
bash
# PostgreSQL実行
docker compose up -d
# マイグレーション + コード生成
mvn generate-sources
# アプリケーション実行
mvn spring-boot:run7.5.4. CI環境ワークフロー
CIではFlywayマイグレーションとjOOQ codegenのためにPostgreSQLサービスが必要です。
yaml
# .circleci/config.yml(抜粋)
backend-build:
docker:
- image: cimg/openjdk:21.0
- image: cimg/postgres:16.0
environment:
POSTGRES_DB: flowin
POSTGRES_USER: flowin
POSTGRES_PASSWORD: flowin1234
steps:
- checkout
- run:
name: DB待機
command: dockerize -wait tcp://localhost:5432 -timeout 60s
- run:
name: ビルド(マイグレーション + codegen + コンパイル)
command: mvn package