본문 바로가기
Git

[Git] Submodule로 구성된 SpringBoot 프로젝트 빌드 에러 해결

by rla124 2024. 6. 14.

창업팀에서 진행하는 백엔드 프로젝트는 컨트롤러와 그 이외의 부분이 분리가 된 구조를 가지고 있으며 도메인 쪽 코드 내 컨트롤러 레포가 서브모듈로 들어있다.

 

그래서 몸체 레포지토리 내에 컨트롤러 위주의 레포지토리가 종속이 되어있는데 단순히 git clone을 통해서 클론을 받을 경우 분명히 둘 다 클론을 받았고 git submdule 명령어로 둘이 연결된 것을 확인했으나....

 

두 레포지토리 코드가 build.gradle로 연결이 되어있는 환경이지만 부모 레포에서 서브 모듈 build.gradle을 인식하지 못해 빌드 단계에서부터 에러가 터진다. 

 

기존 서브 모듈까지 클론이 되지 않는 명령어

spoting-cloud 레포지토리가 몸체 레포지토리이고 이 안에 서브 모듈이 존재한다.

git clone https://github.com/TeamSpoting/spoting-cloud.git

 

위 명령어로 클론을 받고 몸체 레포지토리에서 git submodule 명령어를 치면 서브 모듈 remote 주소가 뜨긴 하지만 제대로 클론이 되지 않아 실제 몸체 레포지토리에 서브 모듈이 위치한 패키지 내부 파일이 전혀 들어있지 않았다. 

 

한 레포 내 서브 모듈까지 같이 클론이 되는 명령어

git clone --recurse-submodules https://github.com/TeamSpoting/spoting-cloud.git

 

위와 같이 수정해서 git bash 상에서 클론을 받으면

내가 굳이 몸체 레포지토리와 컨트롤러 레포지토리(서브모듈)을 서로 다른 폴더 상에 따로 클론을 받지 않아도 저절로 서브모듈까지 클론이 되는 것을 확인했다!

 


서브 모듈이 있는 레포지토리를 그냥 clone하면 서브 모듈 폴더는 텅 빈채로 클론이 된다!!

 

몸체 레포, 서브모듈 레포 모두 다른 파일 디렉토리 상에 따로 클론 받는 것이 아니라

제대로 서브모듈까지 클론받으려면 --recurse-submdule을 붙여야 한다!