져니의 개발 정원 가꾸기

java.lang.nosuchmethoderror: org.gradle.api.plugins.javapluginextension.getsourcesets()lorg/gradle/api/tasks/sourcesetcontainer (gradle 업그레이드시 만난 문제) 본문

개발노트/트러블슈팅

java.lang.nosuchmethoderror: org.gradle.api.plugins.javapluginextension.getsourcesets()lorg/gradle/api/tasks/sourcesetcontainer (gradle 업그레이드시 만난 문제)

전전쪄니 2023. 12. 21. 15:17

gradle5.4.1 에서 6.9.4로 업그레이드를 하는데 사용하는 plugin들의 버전도 같이 업그레이드해야하는 상황이었다.

 

공식문서에 따르면 

먼저 deprecated 된 플러그인, 문법, 의존성들을 업데이트 하고 gradle wrapper --gradle-version [version] 을 실행하여 그레이들을 업데이트 시키라고 한다. 

참고 :  https://docs.gradle.org/6.9.4/userguide/upgrading_version_5.html

 

Upgrading your build from Gradle 5.x to 6.0

This chapter provides the information you need to migrate your Gradle 5.x builds to Gradle 6.0. For migrating from Gradle 4.x, complete the 4.x to 5.0 guide first. We recommend the following steps for all users: Try running gradle help --scan and view the

docs.gradle.org

 

그런데 내가 사용하는 cpd 플러그인의 버전을 올리고  gradle wrapper --gradle-version 6.9를 실행했는데 다음과 같은 에러가 떴다...!

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':cpdCheck'.
java.lang.nosuchmethoderror: 
   org.gradle.api.plugins.javapluginextension.getsourcesets()lorg/gradle/api/tasks/sourcesetcontainer

1. 버전 호환성 문제

구글링을 하다보니 org.gradle.api.plugins.javapluginextension.getsourcesets()lorg/gradle/api/tasks/sourcesetcontainer에서 발생한 에러들이 대부분 플러그인 버전과 그레이들 버전 간에 호환성 문제인 것이 많았다.

그래서 플러그인 문서들을 하나하나 보며 버전을 바꿔보았는데 해결되지 않았다.

 

2. IDE 껐다 키기

 두 번째로 한 것이 진리의 껐다키기다. 역시나 같은 에러를 뱉어냈다. 

3. gradle-wrapper.properties 

gradle wrapper --gradle-version 6.9 명령어를 실행하는 방법이 아니라 gradle-wrapper.properties를 수정&실행해서 업그레이드 시켰다. 

...
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.4-all.zip
...

 

된다...! 대개는 1번에서 해결되는듯 보이는데 안 되면 3번처럼 직접 실행하여 임포트해보자.

(누군가의 시간을 아껴주기를 ㅎㅎ)