Gradle을 활용한 멀티-서버 프로젝트에서는 여러 모듈 간 의존성 설정이 중요합니다. 이 글에서는 공통 모듈을 사용한 프로젝트 구조를 어떻게 설정하는지에 대해 다룹니다. 예시로, Roomie라는 프로젝트를 common, producer, consumer 모듈로 나누어 설명합니다.
1. 프로젝트 구조
프로젝트의 루트 디렉토리는 Roomie로 설정하고, 그 아래 common, producer, consumer 폴더를 만들어 각각의 역할에 맞는 기능을 구현합니다. common 모듈은 다른 모듈들이 공통적으로 사용할 기능들을 포함하며, producer와 consumer 모듈은 각각 생산자와 소비자 서버의 역할을 합니다.
Roomie/
├── common/
│ └── build.gradle
├── producer/
│ └── build.gradle
└── consumer/
└── build.gradle
└── settings.gradle
2. settings.gradle 설정
Gradle 프로젝트에서는 settings.gradle 파일을 사용하여 여러 모듈을 하나의 프로젝트로 통합합니다. 루트 프로젝트에서 각 서브 프로젝트를 어떻게 포함할지 정의하는 부분입니다.
rootProject.name = 'Roomie'
include 'common'
include 'producer'
include 'consumer'
- rootProject.name은 프로젝트의 이름을 설정합니다.
- include는 해당 서브 프로젝트들을 포함하는 역할을 합니다.
3. build.gradle 설정
각 서브 프로젝트는 build.gradle 파일을 통해 필요한 의존성을 설정합니다. 여기서는 producer와 consumer 프로젝트가 common 모듈을 의존하도록 설정하는 방법을 설명합니다.
producer/build.gradle 예시
dependencies {
// 의존성들
implementation project(':common') // 공통 모듈 추가
}
application {
mainClassName = 'server.producer.ProducerApplication'
}
tasks.test {
useJUnitPlatform()
}
consumer/build.gradle 예시
consumer 모듈 역시 동일한 방식으로 common 모듈을 의존성에 추가합니다.
dependencies {
// 의존성들
implementation project(':common') // 공통 모듈 추가
}
application {
mainClassName = 'server.producer.ProducerApplication'
}
tasks.test {
useJUnitPlatform()
}
4. 멀티-모듈 프로젝트에서의 의존성 관리
위와 같은 설정을 통해 producer와 consumer 모듈은 common 모듈을 의존하게 되어, 공통 기능을 쉽게 공유할 수 있습니다.
Gradle의 project(':common')을 사용하여 각 모듈 간의 의존성을 명확하게 관리할 수 있습니다.
이러한 방식으로 Gradle을 설정하면, 멀티-서버 환경에서 효율적으로 의존성을 관리하고, 각 모듈을 독립적으로 개발하면서도 공통 기능을 손쉽게 공유할 수 있습니다.
Gradle을 사용한 멀티-서버 프로젝트 설정은 각 모듈 간의 의존성을 명확히 하고, 공통 모듈을 쉽게 공유할 수 있는 방법을 제공합니다. settings.gradle 파일을 통해 프로젝트 구조를 설정하고, build.gradle에서 의존성 추가를 통해 각 모듈을 연결하면, 관리가 용이한 멀티-모듈 프로젝트를 구축할 수 있습니다.
'Server > 🌱 Spring Boot (java)' 카테고리의 다른 글
[Spring Boot] 멀티-모듈 프로젝트 build시 common 모듈의 의존성 받지 못하는 문제 해결 (0) | 2025.01.24 |
---|---|
[Gradle] common을 사용하는 멀티-모듈 프로젝트에서 순환참조 문제 해결 및 최적화 (0) | 2025.01.24 |
[Spring boot jpa] 찜하기/좋아요 api에서 나온 race condition 문제 해결 (0) | 2025.01.24 |
[Spring] 스프링 MVC 예외 처리 시 인터셉터 재호출 해결법 (0) | 2024.08.09 |
[Spring] 서블릿 예외 처리 시 필터 재호출 해결법 (0) | 2024.07.28 |
댓글