본문 바로가기
개발일지

[개발일지] Maven ➡ Gradle 마이그레이션 하기

by 지지 2023. 4. 18.

Spring Framework ➡ Spring Boot 마이그레이션에 이어 이번엔 Maven ➡ Gradle 마이그레이션 과정이다.

빌드툴을 변경해주는 것도 마이그레이션이라고 하는지는 잘 모르겠다!!!!!! 그냥 변경하기라고 해야하나!!!

 

근데 난 위 과정들을 한 번에 하고 있기 때문에 그냥 마이그레이션이라고 하겠다!

바로 시작해보도록 하자.


Maven -> Gradle

Gradle 설치 

maven빌드를 gradle로 변경시키기 위해선 gradle을 설치해주어야한다.

설치방법

1. https://gradle.org/releases/ 로 들어가서 원하는 버전의 binary 파일을 다운로드한다.

나는 7.6버전을 선택했는데, 버전의 차이를 잘 모르다보니 일단 spring.io로 gradle프로젝트를 만들었을 때의 버전과 맞춰주기 위해 7.6을 선택했다.

 

2. 원하는 폴더에 압축을 풀고 환경변수에 등록해준다.

난 C드라이브에 Gradle폴더를 하나 더 만들어서 해당 폴더에 압축을 풀어주었다.

환경변수 등록은 이 과정을 진행하는 개발자라면 충분히 설정할 수 있을거라고 생각된다!

간단하게 환경변수 등록하는 과정을 캡쳐해봤다.

gradle이 잘 설치 되고 환경변수까지 등록해줬다면 아래처럼 gradle 버전을 확인 할 수 있다!

gradle 설치가 끝났다면 본격적으로 maven을 gradle로 변경시켜보자.


gradle init

먼저, pom.xml이 있는 경로(root)로 이동해준다.

1. 해당 경로에서 아래 명령어를 실행해준다.

gradle init

위 명령어는 일반적으로 신규 gradle 프로젝트를 생성하는 데 사용된다.

하지만 maven빌드를 gradle로 변경 시 프로젝트의 root경로에서 사용할 수 있다.

 

2. 위 명령어를 입력하면 Maven Build를 찾았다며, 그걸 Gradle로 빌드할건지 물어봐준다. yse를 입력하자.

 

3. 그러면 또 스크립트언어(DSL : Domain Specitic Language)를 선택하라고 나오는데, 두 언어를 잘 모르지만 gradle은 Groovy를 기반으로 만들어졌다고 해서 Groovy를 선택했다.

 

4. gradle로의 빌드가 끝났다. 생각보다 엄청 간단해서 놀랬다.

 

5. 이제 마이그레이션을 진행하는 프로젝트를 살펴보자.

gradle관련 파일들이 제대로 생성된 것을 확인할 수 있다.

pom.xml파일이 남아있는데, 삭제해주면 된다.

 

6. pom.xml을 삭제한 후 build.gragle파일에서 Load Mavem Changes를 클릭해 Gradle을 가져오자!

 

7. Load Gradle Project를 클릭한다. (인텔리제이 우측에 gradle 메뉴가 생기게 된다.)

그리고 캡쳐하진 못했는데, bulid.gradel에 'No candidates found for method call plugins.' 등등 메세지가 뜨면서 gradle을 제대로 인식하지 못하는(?) 상황이 발생할 수 있는데, Reload All Gradle Project를 해주면 된다.

이렇게 해주면 Maven에서 Gradle로 변경 끝이다.

이제 프로젝트를 실행시켜보자... 두근두근...


에러 해결하기!!

한 번에 프로젝트가 실행이 된다면 좋겠지만 그럴리가 없다ㅎㅎ

당연히 에러날 줄 알고 긴장하고 있었는데 역시나 에러가 났다! 에러를 확인하고 해결해보자.

 

1. Lombok 라이브러리 문제

실행을 시키자마자 아래와 같은 에러가 났다.

뭔가 잔뜩 에러가 났는데, 자세히 보면 공통점을 발견할 수 있다.

로그를 찍을 때와 데이터를 가져올 때, 그리고 넣어줄 때 에러가 발생을 했는데, 바로 @Slf4j와 @Getter, @Setter 어노테이션을 제공해주는 lombok쪽의 문제인 것을 알 수 있다.

build.gradle에 가서 확인해보니 lombok의존성은 잘 들어가 있었다. 그래도 혹시 몰라서 다른 프로젝트를 참고해 기존 의존성을 빼고 새롭게 lombok의존성을 넣어 라이브러리를 다시 받아주었다.

//기존 lombok의존성
api 'org.projectlombok:lombok:1.18.26'

//새로 추가해준 lombok의존성
implementation 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.22'

아직 gradle이 익숙하지 않아서 앞에 붙은 api, implementation, annotationProcessor 등등이 어떤 역할을 해주는지 잘 모르겠다. 마이그레이션이 끝나면 프로젝트를 진행하면서 차근차근 알아가야지.

 

이렇게 의존성을 수정해준 후 다시 프로젝트를 실행시켜보면 이번엔 잘 실행되는 것을 확인할 수 있었다.

따로 이미지 첨부는 하지 않겠다.

maven -> gradle로 넘어올 때 많은 분들이 롬복의존성 관련 에러를 겪는 것 같다.

 

흠 그리고 이렇게 자동으로 build.gradle이 만들어졌지만 좀 더 세세한 설정은 따로 공부를 해서 맞춰줘야할 것 같다.

현재 위 이미지처럼 build.gradle이 구성되어 있는데, spring.io로 생성했던 다른 gradle프로젝트들은 저 앞에 붙은 api가 거의 implementation으로 되어있다. 그 외에도 다른 build.gradle들과 비교했을 때 조금 다른부분이 발견된다.

의존성 뒤에 붙은 버전도 좀... 스프링부트는 버전을 명시하지 않아도 알아서 적절한 버전을 찾아 넣어주는 걸로 알고 있는데, 저기서 버전을 빼고 빌드를 하면 에러가 난다.ㅜㅜ 이 부분도 더 알아봐야겠다.

실행하는데는 이상이 없지만 조금 찝찝...!

그래도 성공적으로 빌드툴을 교체했다! 이제 본격적으로 공부를 하면서 프로젝트를 진행해야지!


참고

빌드툴을 maven에서 gradle로 성공적으로 교체했다면, 마지막으로 깃헙에 올리지 않아도 될 gradle관련 파일들을 .gitignore에 작성해주자.

### Gradle ###
.gradle
**/build/
!src/**/build/

# Ignore Gradle GUI config
gradle-app.setting

# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar

# Avoid ignore Gradle wrappper properties
!gradle-wrapper.properties

# Cache of project
.gradletasknamecache

난 이정도 추가해줬다!

 

아래 이미지에서 알 수 있듯이 gitognore에 관련 파일들을 작성해주니 깃헙에 올라오는 파일의 양이 줄었다!

왼쪽이 .gitignore 지정 전, 오른쪽이 지정 후


여기까지 빌드툴 변경을 완료했다. 생각보다 쉬웠던 빌드툴 변경. 괜히 쫄았다!

내가 목표했던 마이그레이션 과정은 여기까지다.

이제 API를 개발하고 추후에 jsp에서 thymeleaf로 바꾸는 과정을 직접 해보면서 포스팅도 해야지..

 

여기까지 빌드툴 변경과정이었다. 끝!

 

https://github.com/jeejee1106/RunningGoV2

 

GitHub - jeejee1106/RunningGoV2: 마이그레이션 진행중인 RunningGoV2입니다.

마이그레이션 진행중인 RunningGoV2입니다. Contribute to jeejee1106/RunningGoV2 development by creating an account on GitHub.

github.com

 

[참고 블로그]

gradle이란? 빌드란? maven과 비교 등등

https://shanepark.tistory.com/360

반응형

댓글