공부/Spring

[Spring] 멀티 모듈 사용하기 - 루트 프로젝트에 자식 의존성 추가하기

작은소행성 2024. 1. 5. 23:01

멀티모듈 사용하는 이유

서버를 여러개(api용, batch 용 등)를 사용하면 프로젝트를 여러개 만들어 사용하는데 

프로젝트를 여러개 사용하는 경우 공통 코드를 사용할때 모든 프로젝트의 코드를 수정해주어야 한다. 

이러한 불편한 점을 해결하기 위해서 멀티모듈을 사용하고자 한다. 

 

멀티 모듈을 사용하면 코드를 분리해서 사용하기에 프로젝트별 코드 관리가 용이하다.

 

 

 

루트 프로젝트 생성하기

모듈을 담기 위한 루트 프로젝트를 생성하고 

루트 프로젝트 안에서 모듈을 추가한다.

 

루트 프로젝트는 하위 모듈을 관리하는 역할만 하기 때문에 src 폴더를 삭제해도 된다.

 

모듈 추가하기

project 우클릭 > new > module

모듈을 추가한다. 

모듈 추가 후 자식 모듈과 통신을 위해 

루트 프로젝트 settings.gradle 에 자식 모듈을 추가해준다.

 

 

root 프로젝트

root 프로젝트 build.gradle 에 아래 내용 추가한다.

 


project 

부모와 자식 프로젝트 둘다 공통적으로 사용되는 내용을 작성한다.

 

subproject

자식 프로젝트에 적용할 공통 내용은 subprojects 부분에 작성한다. 

 

 

 

common 모듈 설정 

common 모듈은 jar 파일로 생성해서 다른 프로젝트에 첨부해서 사용하는 것으로

실행 가능한 BootJar로 패키징 할 필요가 없다. 

 

 

 

공통으로 사용하는 common 모듈의 의존성을 각 모듈에 추가해준다. 

 

 

다른 블로그에서는 compileOnly를 사용하기도 하던데 나는 compileOnly로 하면 의존성 추가가 안되어서 implementation을 사용했다.

//common
implementation project(':common_be')

 

 

의존성 여부 확인

common_be에 대한 의존성이 있는지 확인하려면 gradle 에서 확인할 수 있다. 

 

 

참고

오른쪽 gradle탭에서 현재 프로젝트 상태를 확인할 수 있는데

모듈을 추가하면 제일 상위에 새로만든 모듈이 추가되는데 그러면 빌드가 안되고 

프로젝트 구성이랑 동일하게 부모안에 자식모듈이 있어야 빌드 에러가 안난다. 

 

 

반응형