👉🏻멀티모듈에 대한 설명
멀티 모듈이란 서로 독립적인 프로젝트를 하나의 프로젝트로 묶어서, 각각의 프로젝트를 모듈로 활용하는 프로젝트 구조를 말합니다.
멀티 모듈은 각 모듈들이 독립적인 역할을 하고 있기 때문에, 에러가 나거나 고장이 나면 서로 다른 모듈에 크게 영향을 끼치지 않아서 해당 부분만 수정하면 된다는 장점이 있고, 스프링부트 모듈을 생성 할 때 Spring Initializr를 사용하면 생성된 모듈이 별도의 프로젝트인 것처럼 인식됩니다.
이미 멀티모듈의 구축사례는 많은 레퍼런스가 있으므로 참조해서 구축하면 됩니다.
요약하자면..
rootProject.name = "root-project-name"
include("api") <- 어디에도 포함되어 있지 않은 최상위층 모듈
include("common:domain", "common:lib") <- 이 프로젝트에 포함된 모듈과 디렉토리 경로, COMMON이라는 모듈 하위에 domain / lib라는 모듈이 하위로 각각 하나씩 들어있기 때문에 이렇게 작성했다.
root directory의 build.gradle 파일을 삭제하는 이유는, 이 파일이 루트 프로젝트에 있으면 멀티모듈로 인식하지 않기 때문입니다. build.gradle파일이 없어야 이 프로젝트의 모듈들을 각각 인식합니다. 따라서 독립 모듈 안에 있는 build.gradle은 삭제하지 않는 것 입니다.
gradle init으로 생성하지 않고 처음부터 인텔리제이의 Spring initializer(이하 이니셜라이저)로 생성하는 방법입니다.
이렇게 이니셜라이저로 생성하면 gradle init보다 디펜던시를 한번에 import할 수 있다는 장점이 있지만, gradle init으로 만들어지는 buildSrc 모듈은 생성되지 않습니다. 따라서 이니셜라이저로 생성 후 buildSrc 모듈은 새로 추가 해 줘야 합니다.
이 때 빌드가 제대로 되지 않거나, 각 모듈을 인식하지 못하면 모듈 표시가 아닌 일단 폴더의 형태로 모듈들이 생성되어 작동하지 않습니다.
또, root Project의 settings.gradle에 모듈을 include하지 않아도 동일한 현상이 발생됩니다.
완성된 프로젝트 디렉토리 예시는 여기서 확인 해 봅시다.