티스토리 뷰

IT/JAVA 및 Spring

[flyway] Spring boot 3.0.0 에 flyway 설치, init하기

주인장 진빼이

어느 순간부터 갑자기 flyway가 커뮤니티와 팀즈 버전으로 나뉘어져 있었다.

주인장은 커뮤니티 버전을 사용했다.

스프링 3.0.0부터 의존 모듈 설치가 달라졌음을 유의하자.

 

gradle 버전은 7.5.1 이다.

flyway는 opensource database migration tool 중 하나이다.

 

flyway를 사용하여 mariadb 연결할 떄에는

mysql 관련 의존성 모듈을 다운받는다. (mariadb 별도 모듈은 지원하지 않고 있다)

설정 (application.yml) 

spring:
  datasource:
    # jdbc driver info
    url: <DB 연결 정보>
    username: <USER 정보>
    password: <PASSWORD 정보>
    driver-class-name: org.mariadb.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: validate
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MariaDBDialect
        format_sql: true
    show-sql: true
    generate-ddl: false # flyway 설정2
  flyway: #flyway 설정
    baseline-on-migrate: true # 기존 DB가 있는 초기 마이그레이션할 때 사용
    enabled: true

 

설치 정보 (build.gradle)

//build.gradle

buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
    repositories {
        mavenCentral()
    }
    dependencies { // 추가 (클래스 패스 등록)
        classpath "org.flywaydb:flyway-mysql:9.8.3"
    }
}

plugins {
	id "org.flywaydb.flyway" version "9.8.3" // 추가 (플러그인 설치)
}

dependencies {
	// 추가 (의존 모듈 설치)
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    
    implementation('org.flywaydb:flyway-core:9.8.3')
    compileOnly 'org.flywaydb:flyway-mysql:9.8.3'
}

// flyway 연결 정보 설정(configfuration)
flyway {

    driver = 'org.mariadb.jdbc.Driver'
    url = '<URL>:<PORT>/<DB>' // 예: jdbc://mariadb://localhost:3306/flyway
    user = '<USER>'
    password = '<PASSWORD>'
    createSchemas=true
    table = 'schema_history'
    locations = ['classpath:migrations']
    // (configfuration) 관련 링크 https://flywaydb.org/documentation/usage/gradle/migrate
}

 

설치 끝마쳤으면 gradle 명령어로 테스트해보자.

gradle flywayMigrate -i

 

결과

 

정상적으로 지정된 스키마에 엔티티에 등록된 테이블 + schema_history 테이블을 확인할 수 있다.

 

매번 스프링은 버전이 변경됨에 따라 관련 라이브러리, 모듈들에 대해

설치방식이 조금씩 달라져서 이를 찾는데 있어 시간이 많이 소비되는 것 같다.

 

 

참고:

https://flywaydb.org/documentation/database/mariadb

https://flywaydb.org/documentation/usage/gradle/migrate

https://flywaydb.org/documentation/usage/gradle/

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함