상세 컨텐츠

본문 제목

[Flyway] 설정하기

Backend

by choiDev 2023. 4. 10. 23:22

본문

Flyway란?

Flyway란 데이터 베이스 마이그레이션 도구이며 DB의 스키마버전을 관리하고 업그레이드 할수있습니다.

또한 Flyway는 apache license 2.0 라이선스를 채용한 오픈소스로 무료로 사용 가능합니다.

 


 

Flyway의 지원 DB범위

Mysql, PostgreSQL, Oracle, SQL Server, NoSQL 데이터베이스인 MongoDB, Amazon Redshift 도 지원한다.

 


 

Flyway 설정 방법

1. build.gradle 파일에 아래 구문들을 추가합니다.

//flyway 라이브러리 추가
implementation 'org.flywaydb:flyway-core'
implementation 'org.flywaydb:flyway-mysql'
//flyway 플러그인 추가
plugins { 
    id 'org.flywaydb.flyway' version "7.0.1"
}
//flyway 설정 추가
flyway {
    url = 'jdbc:mariadb://localhost:3306/roadrunner?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC'
    user = 'root'
    password = 'root'
    locations = ["filesystem:${file('src/main/java/com/{프로젝트명}/{프로젝트명}/service/migration').absolutePath}"]
}

 

[위에 구문들을 추가한 build.gradle 최종본]

plugins {
    id 'java'
    id 'war'
    id 'org.springframework.boot' version '2.7.4'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'org.flywaydb.flyway' version "7.0.1"
}

group = '프로젝트명'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'mysql:mysql-connector-java:8.0.32'

    runtimeOnly 'org.mariadb.jdbc:mariadb-java-client:3.1.3'
    annotationProcessor 'org.projectlombok:lombok'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    //swagger
    implementation 'io.springfox:springfox-swagger2:3.0.0'
    implementation 'io.springfox:springfox-swagger-ui:3.0.0'

    //flyway
    implementation 'org.flywaydb:flyway-core'
    implementation 'org.flywaydb:flyway-mysql'
}

flyway {
    url = 'jdbc:mariadb://localhost:3306/roadrunner?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC'
    user = 'root'
    password = 'root'
    locations = ["filesystem:${file('src/main/java/com/{프로젝트명}/{프로젝트명}/service/migration').absolutePath}"]
}

 

Flyway가 정상적으로 추가됬다면 Tasks > flyway가 활성화 됩니다.

 

관련글 더보기