
gradle 버전을 4.5.1에서 7.5.1로 업그레이드를 해보며 혹시 몰라 분노하며 정리를 해둔다.
나중에 또 버전업을 할 때에 중복되는 에러가 있으면 참고해야지.
그리고 다른 에러가 있으면 또 분노하며 정리해버려야지.
무작정 gradle-wrapper.properties를 7.5.1로 수정해본다
BEFORE
#Mon Mar 11 17:40:53 KST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-all.zip
AFTER
#Mon Mar 11 17:40:53 KST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
Gretty 버전업
문제 상황
gradle 버전만 올리고 gradle sync를 해보니 에러가 발생한다. gretty 버전 호환 문제이다.
기존에 Gretty 버전을 2.3.1을 사용하고 있었는데, 버전이 호환이 되지 않아 Gretty 버전을 3.0.8으로 업그레이드 해주었다. 버전은 3점대만 넘으면 괜찮은 것 같다.
An exception occurred applying plugin request [id: 'org.gretty', version: '2.3.1']
> Failed to apply plugin 'org.gretty'.
> Cannot run Project.afterEvaluate(Closure) when the project is already evaluated.
org.gradle.api.plugins.InvalidPluginException: An exception occurred applying plugin request [id: 'org.gretty', version: '2.3.1']
문법 수정하기
compile, runtime, testCompile
gradle 버전업을 하면서 compile, testCompile, runtime
등과 같은 문법들이 deprecated되었다. 따라서, 아래를 참고하여 문법을 수정한다.
Before | After |
---|---|
compile | implementation |
testCompile | testImplementation |
runtime | runtimeOnly |
left shift (<<)
또, 문제 발생
Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method leftShift() for arguments [build_51cw4a4avxrmuakqg7nwsvxpe$_run_closure5@45838670] on task '비밀이지롱' of type org.gradle.api.DefaultTask.
gradle version 업 이후로는 left shift 문법을 사용할 수 없다. 해당 부분은 doLast
를 사용하여 대체한다.
BEFORE
task deploy(dependsOn : war) << {
}
AFTER
task deploy(dependsOn : war) {
doLast {
// ...
}
}
tomcat 버전 지원 안함
이번엔 gretty 설정의 톰캣이 말썽이다.
Unsupported servlet container: tomcat8
다른 분의 프로젝트를 참고해서 tomcat85
로 수정했다.
BEFORE
gretty {
// ...
servletContainer = 'tomcat8'
}
AFTER
gretty {
// ...
servletContainer = 'tomcat85'
}
jacoco 설정 중 문법 오류
Cannot set the value of read-only property 'classDirectories' for task
classDirectories
부분을 classDirectories.from
으로 변경
classDirectories = //....
classDirectories.from = // ...
api 사용
compile
을 사용할 경우, 해당 모듈을 사용하는 다른 모듈에서 dependencies에 있는 라이브러리를 참조할 수 있었다. 하지만, implementation
으로 수정되면서 사용이 불가해졌다. 이러한 경우, plugin을 java
에서 java-library
로 변경하고, api
함수를 사용하면 해결할 수 있다.
QueryDSL 설정 수정
Lombok 오류
...java:60: error: cannot find symbol
log.error("get hostName err", e);
lombok에서 에러가 발생한다. lombok은 compile시에만 필요하므로 compileOnly
를 사용한다. annotationProcessor
는 어느 시점에 사용되는 것인지 확인이 필요하다.
BEFORE
providedCompile 'org.projectlombok:lombok:' + versions.lombok
AFTER
compileOnly 'org.projectlombok:lombok:' + versions.lombok
annotationProcessor 'org.projectlombok:lombok:' + versions.lombok
과연 난 잘 수정했을까?
추가 수정 사항이 있다면 +로 작성해야지. 오늘 날짜는 9월 28일!
혹시나 더 수정해야할 사항들이 있다면 이 글을 보시는 분들은 댓글 달아주심 감사함다
'Spring' 카테고리의 다른 글
[Spring Boot] Jasypt으로 암호화 적용하기 (0) | 2023.03.26 |
---|---|
Spring Boot 프로젝트 생성하기 (0) | 2022.07.15 |