SW/Gradle

Gradle: 다중 모듈(Java) 애플리케이션 만들기 : 예제, 방법

얇은생각 2025. 2. 14. 07:30
반응형

시작해볼까요?

Java 프로젝트를 하다 보면 점점 코드가 많아지고 복잡해지면서, '이걸 어떻게 유지보수하지?'라는 생각이 들 때가 많죠. 이런 문제를 해결하려면 다중 모듈 구조가 딱이에요! 여러 기능을 나누면 코드가 정리되고, 재사용도 편해지며, 유지보수도 쉬워지는 장점이 있답니다. 오늘은 Gradle을 사용해서 쿠폰 앱을 다중 모듈 구조로 만들어볼 거예요.

여기서 배울 내용은?

  • 다중 모듈 프로젝트가 뭔지 쉽게 설명
  • Gradle로 프로젝트 설정하는 법
  • 부모-자식 프로젝트 연결하는 방법
  • 유지보수하기 편한 프로젝트 구조 팁

그럼 바로 시작해볼까요? 🚀

 


 

Gradle: 다중 모듈(Java) 애플리케이션 만들기 : 예제, 방법

 

왜 다중 모듈이 필요할까요?

다중 모듈 프로젝트의 장점

한 프로젝트 안에 모든 기능을 한꺼번에 몰아넣으면 나중에 고치거나 확장할 때 정말 골치 아프죠. 그래서 다중 모듈 구조를 추천해요! 왜냐하면:

  • 역할 분리: 웹, 서비스, 데이터 처리를 따로 개발할 수 있어요.
  • 코드 재사용: 한 번 만든 모듈을 다른 프로젝트에서도 활용할 수 있어요.
  • 확장성: 새로운 기능 추가가 훨씬 수월해져요.
  • 의존성 관리가 편함: 각 모듈마다 필요한 라이브러리를 따로 설정할 수 있어요.

 

 

쿠폰 앱의 프로젝트 구조

우리가 만들 쿠폰 앱은 아래처럼 구성될 거예요:

CouponApp (루트 프로젝트)
│── settings.gradle
│── build.gradle
│── web (웹 모듈)
│    ├── src/main/java
│    ├── build.gradle
│── services (비즈니스 로직)
│    ├── src/main/java
│    ├── build.gradle
│── integration (외부 서비스 연동)
│    ├── src/main/java
│    ├── build.gradle
│── data (데이터 관리)
│    ├── src/main/java
│    ├── build.gradle

 

각 모듈이 하는 역할을 살펴보면:

  • 웹(Web): 사용자들이 웹에서 쿠폰을 조회하고 사용
  • 서비스(Services): 쿠폰 등록 및 관리 같은 핵심 기능을 담당
  • 연동(Integration): 외부 API나 다른 시스템과 데이터 통신
  • 데이터(Data): 데이터베이스와 연결해서 쿠폰 정보를 저장하고 불러오기

 


 

 

다중 모듈 프로젝트 설정하기

1. 프로젝트 폴더 만들기

먼저 프로젝트 폴더를 만들고 이동해볼게요:

mkdir CouponApp
cd CouponApp

 

Gradle 프로젝트를 초기화하는 명령어도 실행해줘야겠죠?

gradle init

 

 

2. settings.gradle 파일 수정

루트 프로젝트의 settings.gradle을 편집해서 하위 모듈을 추가해야 합니다:

rootProject.name = 'CouponApp'
include 'web', 'services', 'integration', 'data'

 

이렇게 하면 web, services, integration, data가 하위 프로젝트로 등록됩니다.

 

 

3. 각 모듈 폴더 만들기

터미널에서 다음 명령어를 입력해 모듈별 폴더를 만들어 주세요:

mkdir -p web/src/main/java
mkdir -p services/src/main/java
mkdir -p integration/src/main/java
mkdir -p data/src/main/java

 

각 모듈에는 build.gradle 파일이 필요하니 따로 만들어주세요.

 

 

4. 루트 프로젝트의 build.gradle 설정하기

이제 build.gradle을 수정해서 프로젝트의 공통 설정을 해볼게요:

plugins {
    id 'java'
}

task wrapper(type: Wrapper) {
    gradleVersion = '7.5'
}

allprojects {
    repositories {
        mavenCentral()
    }
}

subprojects {
    apply plugin: 'java'

    dependencies {
        implementation 'org.springframework:spring-core:5.3.21'
        testImplementation 'junit:junit:4.13.2'
    }
}

 

 

5. 각 모듈의 build.gradle 설정

모듈마다 필요한 라이브러리가 다르니 따로 설정해줘야 해요.

 

웹 모듈 (web/build.gradle)

dependencies {
    implementation project(':services')
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

 

서비스 모듈 (services/build.gradle)

dependencies {
    implementation project(':integration')
    implementation project(':data')
    implementation 'org.springframework:spring-context'
}

 

연동 모듈 (integration/build.gradle)

dependencies {
    implementation 'org.springframework:spring-web'
}

 

데이터 모듈 (data/build.gradle)

dependencies {
    implementation 'org.springframework.data:spring-data-jpa'
    runtimeOnly 'com.h2database:h2'
}

 


 

프로젝트 빌드하고 실행하기!

1. 빌드하기

이제 프로젝트를 빌드해볼까요? 터미널에서 다음 명령어를 입력하세요:

gradle build

 

2. 실행하기

웹 모듈을 실행하려면 이렇게 하면 됩니다:

cd web
./gradlew bootRun

 


 

꿀팁: 유지보수하기 좋은 다중 모듈 프로젝트 만들기

  1. 모듈 이름을 직관적으로 정하세요 – 한눈에 역할이 보이도록!
  2. 불필요한 의존성을 피하세요 – 필요 없는 라이브러리는 속도를 늦춥니다.
  3. 공통 설정을 중앙에서 관리하세요build.gradle을 활용하세요.
  4. 버전 관리를 철저히 하세요 – 모듈마다 버전을 관리하면 유지보수가 편해집니다.
  5. 의존성 관리를 최적화하세요apiimplementation을 적절히 사용하세요.

 

반응형