기술 블로그 (Tech Blog)/Project-coopang
멀티모듈 프로젝트 설정
devWonny
2024. 9. 12. 20:53
Today I Learn ✍🏼
- 오늘 하루 가장 인상 깊었던 배움에는 뭐가 있었지?
폴더 불러왔는데 프로젝트가 다 등록된거
- 그 배움까지 다가가는데 어떤 어려움이 있었지?
해보면 되지
- 그 어려움을 해결하기 위한 나의 시도들은 무엇이 있었지?
해보면 됨
- 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지?
좋다
- 이 상태에서 이후 더 나은 내가 되려면 무엇을 보완하지?
계속된 연습, 실천
1. 멀티모듈 프로젝트 구조 설정
먼저 프로젝트 구조를 멀티모듈 구조로 설정해야 합니다.
예를 들어, coopang의 구조는 다음과 같습니다
coopang (루트 프로젝트)
├── eureka
│ └── src
├── gateway
│ └── src
└── user
└── src
이러한 구조에서 각 하위 폴더(eureka, gateway, user)가 별도의 모듈로 인식됩니다.
2. build.gradle 파일 설정 (Gradle 사용 시)
루트 프로젝트에 build.gradle 파일이 있는 경우, 다음과 같이 하위 프로젝트를 포함하도록 설정합니다
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.3'
id 'io.spring.dependency-management' version '1.1.6'
}
allprojects {
group = 'com.coopang'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2023.0.3")
}
}
subprojects {
// 공통 설정
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// Lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// Prometheus for metrics monitoring
implementation 'io.micrometer:micrometer-registry-prometheus'
// Loki Logback Appender for logging to Loki
implementation 'com.github.loki4j:loki-logback-appender:1.5.1'
// Swagger for API documentation
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
// Testing dependencies
testAnnotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.projectlombok:lombok'
}
test {
useJUnitPlatform()
}
}
settings.gradle 파일에 하위 프로젝트를 추가
rootProject.name = 'coopang'
include 'eureka', 'gateway', 'user'
이렇게 설정하면 인텔리제이가 프로젝트를 열 때 하위 프로젝트들을 자동으로 모듈로 인식합니다.