article thumbnail

얼마 전 노트북 배터리의 방전으로 인해 프로젝트의 소스코드 다시 깃에서 내려받아야 하는 상황이 있었다.

프로젝트를 다시 셋팅하는 과정에서 Gradle 버전에 의해서 에러가 발생하게 되었고 해결과정과 어떻게 해결하였는지를 기록으로 남겨두려 한다.

(2시간 정도 찾아 헤맸는데 에러 자체는 매우 간단하게 해결되서 허탈했었다.)

 

프로젝트 설정 환경

  • IntelliJ IDEA 2023.1
  • springboot framework 2.7.4
  • Gradle 8.0
  • JDK 11

 

에러 발생

이전 노트북을 포맷하기 전에 프로젝트 셋팅을 비교하며 동일하게 셋팅하였다. 하지만 Run을 실행하자 아래와 같은 문구가 나오며 에러가 발생하였다.

  • A problem was found with the configuration of task ':processResources' (type 'ProcessResources').
  • Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class

ProcessResources 타입의 파일에 의해 문제가 발생하였다는데 해당 파일이 위치하는 주소를 들어가봤지만 아무것도 들어있지 않은 빈 폴더였다. 그렇다면 저 ProcessResources가 뭐길래 설정하는데 실패했다는걸까?

 

 processResources
프로덕션(src 폴더)의 resources를 build 디렉토리 하위의 프로덕션의 resourcs 디렉토리에 복사한다.

 

문제 해결

버전 확인

우선 사용하고 있는 환경설정들의 버전이 호환되는지 확인하였다.

스프링부트 3.0부터는 JDK 17 이상을 지원하기 때문에 JDK 11을 사용할 수 없지만 해당 프로젝트는 스프링부트 2.x.x를 사용하고 있기 때문에 문제가 발생하지 않는다.

 

SDK 확인

이전에 프로젝트와 Gradle의 SDK와 JDK 버전을 다르게 설정해 에러가 난 적이 있어 혹시 이것이 문제인가 다시 한번 확인하였다.

 

1. File > Project Structure > Project Settings - Project

SDK의 버전을 JDK 11로 설정해주었다.

 

2. File > Settings > Build, Execution, Develoyment > Gradle

설정을 다음과 같이 해주었다.

Gradle JVM은 Project SDK로 설정하였는데, Project Structure에서 설정한 Oracle JDK 11을 설정해도 되지만 동일한 프로젝트에서 사용할 Gradle이기 때문에 Project SDK로 설정하였다. Project SDK는 Project Structure에서 SDK를 설정하면 자동으로 생성된다.

 

3. Run/Debug Configurations > Spring Boot

Build and run에서 SDK를 프로젝트 SDK를 사용한다.

이미지는 프로젝트 명이 보이기 때문에 생략하였다.

 

문제 해결

스프링부트 2.7.4과 Gradle 8.0도 확인하였다. 하지만 스프링부트는 7.x(7.5 또는 그 이후)와 8.x를 지원받을 수 있어 이 또한 문제가 될 사항이 아니었다.

하지만 검색을 하며 Gradle이 종종 인텔리제이에서 인식이 되지 않아 위와 같은 에러를 발생시킨다는 것을 확인하였다. 그리고 같은 프로젝트를 진행하는 분의 Gradle 버전이 7.5.1인 것을 보고 다운 그레이드를 했다.

 

gradle\wrapper\gradle-wrapper.properties에 들어가 gradle의 버전을 변경했더니 정상적으로 작동하였다!

 

해결 이후

이전에 처음 프로젝트를 인수인계 받을 때도 같은 이유 때문에 머리가 아팠는데 이래서 기록이 중요하구나 싶었다. 그리고 gradle을 인텔리제이가 자동으로 설치해주는데 매번 8.0으로 설치해서 이러한 고생을 시키는지는 잘 모르겠다.

어쩌면 설정되어 있는 다른 플러그인에 의해 8.0을 사용할 수 없는 것일 수도 있다는 생각도 든다.

다만 이 에러를 해결하면서 복잡하게 얽혀있는 소스코드에서 이것의 밑바탕이 되는 환경설정과 각 환경의 버전들 간의 호환성도 후에 코드를 유지, 보수 하는데 얼마나 중요할 수 있는지 다시 깨닫게 되었다.

 

 


[ 참고 ]

https://title-developer.tistory.com/11

https://ttl-blog.tistory.com/1273

https://jojoldu.tistory.com/698

https://dream-and-develop.tistory.com/354

https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/

https://stackoverflow.com/questions/59405894/a-problem-was-found-with-the-configuration-of-task-appprocessdebugresources

https://integer-ji.tistory.com/376