[컴] gradle 에서 flyway 설정하기

migration tool / spring boot / spring migration 툴 / db / database 

gradle 에서 flyway 설정하기

ref. 1 의 방법을 참고하면 된다. 다만 ref. 1 은 구버전의 flyway 에 대한 글이다. 현재 2022-11 기준, 최신버전은 9.7.0 이다.

여기서 이야기하려는 것은 gradle 을 통해서 flyway 를 실행하는 방법이다. 그래서 build.gradle 에 설정해 주면 된다. 다만 몇가지 설정값(pw같은)을 외부로 뺄 것이라서, flyway.conf 파일이 추가로 쓰인다.

디렉토리 구조:

- <proj_root>/
    - conf/
        - flyway.conf
    - build.gradle

build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        ...
        // for flyway
        classpath "org.flywaydb:flyway-mysql:9.7.0"
    }
}

plugins {
    id "org.flywaydb.flyway" version "9.7.0"
}

config file 예시

config file 은 아래처럼 작성하면 된다.

# flyway.conf
flyway.url=jdbc:mariadb://127.0.0.1:3306/mydatabase?log=true&sessionVariables=time_zone='+00:00'
flyway.user=testflyway
flyway.password=testflyway
flyway.encoding=UTF-8

config file 을 사용해서 실행하는 방법

<proj>/conf/flyway.conf 를 사용하는 법은 Config file 사용법을 참고하면, 아래처럼 실행을 하면 된다.

아래는 gradlew flywayBaseline 을 실행하는 command 이다.

gradlew -Dflyway.configFiles=./conf/flyway.conf -Dflyway.baselineVersion="1.3.1" -Dflyway.baselineDescription="Existing version of MyDatabase" flywayBaseline

gradlew flywayBaseline -i 를 하면 좀 더 자세한 정보를 확인할 수 있다.

migrate 방법

flywayMigrate 를 하면 다음 경로에 있는 .sql 파일을 실행한다.

  • <proj>/src/main/resources/db/migration/
gradlew -Dflyway.configFiles=./conf/flyway.conf flywayMigrate

예를 들어 <proj>/src/main/resources/db/migration/V1.3.2__testgen.sql 라는 파일이 있는경우, flywayMigrate 를 하면, 아래처럼 history 가 추가되고, sql file 내의 sql statement 가 실행된다.

주의할점

주의할 점은 위의 flywayBaseline 명령을 할 때 flyway.baselineVersion="1.3.1" 를 정했기 때문에, flywayMigrate 는 그 이후부터 실행된다. 그래서 만약 .sql file 의 file 이름이 예를 들어 V1.3.0__testgen.sql 라면, 1.3.1 보다 낮은 버전이기 때문에 실행되지 않는다.

undo

undo 기능은 commecial 에서만 제공한다고 한다.

tip: 그냥 undo 를 하지 말고, 새롭게 버전을 만들고, 그곳에 undo 에서 수행할 내용을 적으면 될 듯 하다.

Gradle Flyway Tasks

See Also

  1. 쿠…sal: [컴] flywayMigrate 를 해서 checksum error 가 나온 경우

Reference

  1. GitHub - iinow/flyway: spring boot + flyway

댓글 없음:

댓글 쓰기