공식 가이드대로 했을때 몇가지 오류때문에 버전 업그레이드가 잘 되지 않았었기 때문에
삽질을 줄이고자 이 포스팅을 작성하게 되었습니다 😊
필수 사항 : JDK 8 이상
우선, 버전을 마이그레이션 할 때
몇가지 라이브러리들은 버전을 업그레이드 해주지 않으면 에러가 납니다.
그리고 한방에 버전을 쭉 올려버리면 오류를 잡았음에도 불구하고 자꾸 알수 없는 오류가 발생하며 빌드가 되지 않습니다(혹 이유를 아신다면 코멘트 부탁드리겠습니다 🙇)
따라서 1.5 -> 2.0 -> 2.1
순서로 버전을 업그레이드 했습니다.
순서
1. gradle 버전이 4.4 가 아닐경우 4.4-all 로 변경
gradle > wrapper > gradle-wrapper.properties
에서 아래와 같이 gradle 버전을 수정합니다.
1 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip |
2. build.gradle
에 dependency-management
를 추가
1 | apply plugin: 'io.spring.dependency-management' |
3. springboot 버전 바꾸기
1 | springBootVersion = '2.0.5.RELEASE' |
아래부턴 쓰는 라이브러리가 다양하기 때문에
버전 업그레이드로 인한 특정 라이브러리 설정의 변화로 발생하는 오류를 고치는 방법을 작성할 수 없었습니다.
대신 어떻게 고쳐야 하는지에 대한 문서는
위 링크를 참고하시면 될 것 같습니다.
4. 빌드
만약 컴파일 오류가 난다면 해당되는 오류를 고칩니다.
(ex: log4j 오류가 나서 log4j2로 고쳤습니다)
5. application.properties
수정
빌드 깨진 것을 확인 후 해당 설정을 application.properties
에서 적절하게 고칩니다.
(여담으로 datasource 쪽에서 자꾸 오류가 났습니다)
6. bean overriding
org.springframework.beans.factory.support.Bean Definition Override Exception
위의 오류가 발생하면 application.properties 에 아래 코드를 추가합니다.spring.main.allow-bean-definition-overriding=true
이것은 bean overriding을 허용한다는 것 입니다.
1 | The server time zone value ‘KST’ is unrecognized or represents more than one time zone : |
위의 오류가 발생하면 아래와 같이 DB url의 DB명 뒤에 ?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
를 추가합니다
1 | jdbc:mysql://아이피:포트/DB명?characterEncoding=UTF-8&serverTimezone=Asia/Seoul |
7. 버전 업그레이드 2.0 -> 2.1
빌드 및 run이 성공적으로 되면 build.gradle
에서 2.1.3.RELEASE
로 springboot 버전을 변경합니다.
1 | springBootVersion = '2.1.3.RELEASE' |
그 후 위의 작업을 반복하며 오류를 잡으면 됩니다.
2.1 버전 부턴 mysql 드라이버 명이 변경되었습니다.
1 | 기존 : com.mysql.jdbc.Driver |
8. properties-migrator 제거
빌드 및 run이 성공적으로 되면 build.gradle 에서 추가해뒀던 아래 코드를 제거 합니다.
1 | runtime("org.springframework.boot:spring-boot-properties-migrator") |
혹 내용이 잘못되었거나 보충해야 될 부분이 있다면 코멘트 남겨주세요 🙏
읽어주셔서 감사합니다 :)
- 추가
(19.5월 기준) 만약 swagger를 쓰는데 마이그레이션 시 오류 날 경우 2.9.1로 올려주셔야 됩니다 :)
참고자료