루트 프로젝트 생성:
Gradle 설정 파일 생성:
settings.gradle
파일에서 멀티 모듈을 정의한다.settings.gradle
예시:
rootProject.name = 'waiting-system'
include 'libs:core'
include 'libs:database'
include 'libs:s3-client'
include 'libs:queue-client'
include 'api:user-api'
include 'api:boss-api'
include 'api:admin-api'
libs/
와 api/
디렉토리를 만들고, 각각 모듈 디렉토리를 생성한다.최종 디렉토리 구조:
waiting-system/
├── build.gradle
├── settings.gradle
├── libs/
│ ├── core/
│ ├── database/
│ ├── s3-client/
│ └── queue-client/
└── api/
├── user-api/
├── boss-api/
└── admin-api/
libs/core
디렉토리로 이동:
gradle init
).build.gradle
파일 작성:
libs/core/build.gradle
:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
}
libs/database
디렉토리로 이동:
build.gradle
파일 작성:
libs/database/build.gradle
:
dependencies {
implementation project(':libs:core') // Core 모듈 의존
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
libs/s3-client
디렉토리로 이동:
build.gradle
파일 작성:
libs/s3-client/build.gradle
:
dependencies {
implementation project(':libs:core')
implementation 'com.amazonaws:aws-java-sdk-s3'
}
libs/queue-client
디렉토리로 이동:
build.gradle
파일 작성:
libs/queue-client/build.gradle
:
dependencies {
implementation project(':libs:core')
implementation 'org.springframework.boot:spring-boot-starter-amqp' // RabbitMQ 예시
}
각 API 모듈 디렉토리 초기화:
api/user-api
, api/boss-api
, api/admin-api
각각 초기화.build.gradle
파일 작성:
api/user-api/build.gradle
:
dependencies {
implementation project(':libs:core') // 공통 기능
implementation project(':libs:database') // 데이터베이스
implementation project(':libs:s3-client') // 파일 저장
implementation project(':libs:queue-client') // 메시지 큐
}
build.gradle
설정build.gradle
에서 플러그인 및 공통 의존성 버전을 설정.build.gradle
:
plugins {
id 'org.springframework.boot' version '3.1.0' apply false
id 'io.spring.dependency-management' version '1.1.3' apply false
id 'java'
}
allprojects {
group = 'com.example'
version = '1.0.0'
repositories {
mavenCentral()
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
}
Gradle 빌드 확인:
./gradlew build
를 실행해 빌드가 정상적으로 작동하는지 확인.모듈 간 의존성 확인:
./gradlew dependencies
를 실행해 의존성이 제대로 연결되었는지 점검.Spring Boot 애플리케이션 실행:
user-api
)에 @SpringBootApplication
을 추가해 애플리케이션이 정상적으로 실행되는지 확인.모듈 경량화:
의존성 주의:
테스트 전략 수립:
유지보수 고려: