공통 모듈 형상 참고 사이트
https://github.com/DISID/disid-proofs/tree/master/spring-boot-multimodule
부모가 되는 spring-boot-multimodule 프로젝트의 pom.xml 내부를 확인 하면 모듈 들이 존재 한다.
<modules>
<module>model</module>
<module>repository</module>
<module>service-api</module>
<module>service-impl</module>
<module>application</module>
</modules>
해당 모듈들은 각 하위 프로젝트의 이름들이 명시 되어 있어야 한다.
<packaging>pom</packaging>
또한 packaging을 jar가 아닌 pom으로 선언 되어있어야 한다.
하위 프로젝트 application의 pom을 확인하면
<parent>
<groupId>sample.multimodule</groupId>
<artifactId>sample.multimodule</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<parent> 태그 안에 부모가 되는 프로젝트의 groupId, artifactId, version을 선언 해야 한다.
자기 자신은의
<packaging>war</packaging>
packaging은 배포 파일 >> war, jar로 선언해야 한다.
저의 경우 공통 컨트롤러 프로젝트 하나에 여러개의 서비스 프로젝트를 모듈화 하였는데 만약 core 프로젝트가 필요하다면
<!-- Project modules -->
<dependency>
<groupId>sample.multimodule</groupId>
<artifactId>sample.multimodule.service.impl</artifactId>
<version>${project.version}</version>
</dependency>
core 프로젝트를 dependency하여 주면 된다.
최종적으로 선언하고 maven 빌드 해주시면 각 프로젝트끼리 배포 된 jar, war파일을 바라보며 서비스가 실행 된다.
pom.xml에서의 다른 패키지들과 플러그인들을 선언 할 경우 가장 최상위 부모 pom에 선언하면 다른 프로젝트는 부모의 라이브러리를 참조 한다.