기술 블로그 (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'

 

 

이렇게 설정하면 인텔리제이가 프로젝트를 열 때 하위 프로젝트들을 자동으로 모듈로 인식합니다.