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 설정](/ko/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 코드 생성](/ko/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