본문 바로가기

Study Information Technology

Spring Boot에서 멀티 모듈 프로젝트 생성하기

728x90
반응형

Spring Boot에서 멀티 모듈 프로젝트 생성하기

Overview

Spring Boot는 현대적인 Java 애플리케이션을 쉽게 개발할 수 있도록 도와주는 강력한 프레임워크입니다. 멀티 모듈 프로젝트는 이러한 Spring Boot 애플리케이션을 구성하는 데 있어 매우 유용한 접근 방식입니다. 각 모듈은 특정 기능이나 서비스에 대한 책임을 지니며, 서로 다른 모듈 간의 의존성을 명확하게 정의함으로써 코드의 유지보수성과 재사용성을 높일 수 있습니다. 이번 글에서는 Spring Boot에서 멀티 모듈 프로젝트를 어떻게 구성하고 관리할 수 있는지에 대해 자세히 설명하겠습니다.

1. 멀티 모듈 프로젝트란?

멀티 모듈 프로젝트는 여러 개의 모듈(또는 서브 프로젝트)로 구성된 프로젝트입니다. 각 모듈은 독립적인 기능을 제공하며, 특정 책임을 가지고 있습니다. 예를 들어, 하나의 프로젝트에 데이터베이스 관련 코드, 비즈니스 로직, API 통신 등을 각각 다른 모듈로 나누어 관리할 수 있습니다.

예시

  • common: 공통적으로 사용하는 유틸리티 클래스와 설정 파일을 포함
  • service: 비즈니스 로직을 처리하는 모듈
  • repository: 데이터베이스와의 통신을 담당하는 모듈
  • api: 외부 시스템과의 API 통신을 관리하는 모듈

2. 프로젝트 구조

멀티 모듈 프로젝트는 일반적으로 다음과 같은 디렉토리 구조를 가집니다:

my-multi-module-project
│
├── common
│   ├── src
│   ├── pom.xml
│
├── service
│   ├── src
│   ├── pom.xml
│
├── repository
│   ├── src
│   ├── pom.xml
│
├── api
│   ├── src
│   ├── pom.xml
│
└── pom.xml

설명

  • common: 공통 라이브러리 및 유틸리티가 포함된 모듈
  • service: 비즈니스 로직을 구현하는 모듈
  • repository: 데이터베이스 접근을 처리하는 모듈
  • api: 외부 API와의 통신을 담당하는 모듈
  • pom.xml: 전체 프로젝트의 빌드와 의존성을 관리하는 최상위 POM 파일

3. 최상위 POM 파일 구성

멀티 모듈 프로젝트에서 가장 중요한 부분 중 하나는 최상위 POM 파일입니다. 최상위 POM 파일에서 각 모듈 간의 의존성을 정의할 수 있습니다.

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>my-multi-module-project</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <modules>
    <module>common</module>
    <module>service</module>
    <module>repository</module>
    <module>api</module>
  </modules>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>2.5.4</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

설명

  • groupId, artifactId, version: 프로젝트의 메타 정보를 정의합니다.
  • modules: 하위 모듈을 정의합니다.
  • dependencyManagement: 모든 모듈에서 공통으로 사용할 의존성을 관리합니다.

4. 각 모듈의 POM 파일 설정

각 모듈에서도 필요한 의존성을 추가하고, 상위 POM 파일을 부모로 설정해야 합니다.

예시: common/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.example</groupId>
    <artifactId>my-multi-module-project</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <artifactId>common</artifactId>
</project>

설명

  • parent: 최상위 POM 파일을 지정하여 상속받습니다.
  • artifactId: 모듈의 고유 이름을 지정합니다.

5. 멀티 모듈 프로젝트의 이점

  • 구조화된 코드: 각 모듈이 특정 기능에 대한 책임을 지니므로, 코드가 잘 조직되어 가독성이 높아집니다.
  • 유지보수 용이: 변경 사항이 특정 모듈에 국한되므로, 버그 수정이나 기능 추가 시 영향을 받는 범위가 줄어듭니다.
  • 재사용성: 공통 기능을 가진 모듈을 다른 프로젝트에서도 쉽게 재사용할 수 있습니다.

6. 테스트와 빌드

각 모듈에 대해 개별적으로 테스트를 작성할 수 있으며, Maven을 통해 모든 모듈을 한 번에 빌드할 수 있습니다. Maven 명령어는 다음과 같습니다.

mvn clean install

이 명령어는 모든 모듈을 순차적으로 빌드하고, 테스트를 수행합니다. 만약 특정 모듈에서 문제가 발생하면, Maven은 해당 모듈의 빌드 에러를 출력합니다. 예를 들어, 다음과 같은 에러가 발생할 수 있습니다.

[ERROR] Failed to execute goal on project service: Could not resolve dependencies for project com.example:service:jar:1.0-SNAPSHOT: Could not find artifact com.example:common:jar:1.0-SNAPSHOT -> [Help 1]

이 에러는 common 모듈의 빌드가 실패했거나, 해당 모듈이 존재하지 않음을 나타냅니다. 이 경우, common 모듈을 확인하여 빌드 상태를 점검해야 합니다.

7. 결론

Spring Boot의 멀티 모듈 프로젝트는 코드의 구조화, 유지보수성, 재사용성을 높여주는 효과적인 방법입니다. 각 모듈은 명확한 책임을 가지며, 서로 독립적으로 개발 및 테스트할 수 있습니다. 최상위 POM 파일을 활용하여 모든 모듈의 의존성을 관리하면, 복잡한 애플리케이션도 체계적으로 구성할 수 있습니다.

참고문서

반응형