시작해볼까요?
Java 프로젝트를 하다 보면 점점 코드가 많아지고 복잡해지면서, '이걸 어떻게 유지보수하지?'라는 생각이 들 때가 많죠. 이런 문제를 해결하려면 다중 모듈 구조가 딱이에요! 여러 기능을 나누면 코드가 정리되고, 재사용도 편해지며, 유지보수도 쉬워지는 장점이 있답니다. 오늘은 Gradle을 사용해서 쿠폰 앱을 다중 모듈 구조로 만들어볼 거예요.
여기서 배울 내용은?
- 다중 모듈 프로젝트가 뭔지 쉽게 설명
- Gradle로 프로젝트 설정하는 법
- 부모-자식 프로젝트 연결하는 방법
- 유지보수하기 편한 프로젝트 구조 팁
그럼 바로 시작해볼까요? 🚀
왜 다중 모듈이 필요할까요?
다중 모듈 프로젝트의 장점
한 프로젝트 안에 모든 기능을 한꺼번에 몰아넣으면 나중에 고치거나 확장할 때 정말 골치 아프죠. 그래서 다중 모듈 구조를 추천해요! 왜냐하면:
- 역할 분리: 웹, 서비스, 데이터 처리를 따로 개발할 수 있어요.
- 코드 재사용: 한 번 만든 모듈을 다른 프로젝트에서도 활용할 수 있어요.
- 확장성: 새로운 기능 추가가 훨씬 수월해져요.
- 의존성 관리가 편함: 각 모듈마다 필요한 라이브러리를 따로 설정할 수 있어요.
쿠폰 앱의 프로젝트 구조
우리가 만들 쿠폰 앱은 아래처럼 구성될 거예요:
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
꿀팁: 유지보수하기 좋은 다중 모듈 프로젝트 만들기
- 모듈 이름을 직관적으로 정하세요 – 한눈에 역할이 보이도록!
- 불필요한 의존성을 피하세요 – 필요 없는 라이브러리는 속도를 늦춥니다.
- 공통 설정을 중앙에서 관리하세요 –
build.gradle
을 활용하세요. - 버전 관리를 철저히 하세요 – 모듈마다 버전을 관리하면 유지보수가 편해집니다.
- 의존성 관리를 최적화하세요 –
api
와implementation
을 적절히 사용하세요.
'SW > Gradle' 카테고리의 다른 글
Gradle: 멀티 모듈 프로젝트 쉽게 배우기! (0) | 2025.02.16 |
---|---|
Gradle: 쉽고 재밌게 배우는 멀티 모듈 Gradle 프로젝트 (0) | 2025.02.15 |
Gradle: Gretty 플러그인 : 활용, 사용 방법, 예제, 개념, 설명 (1) | 2025.01.22 |
Gradle : Java 웹 애플리케이션 War : 배포 방법, 예제, 개념, 개요 (0) | 2025.01.21 |
Gradle : Java EE 웹 애플리케이션 구축: 예제, 방법 (0) | 2025.01.20 |