정구리의 우주정복
[Spring] intellij 멀티모듈 만들기 + 의존성 추가 본문
저번에 게이트웨이랑 api 서버 2개를 만들었는데 플젝마다 repo 를 만들면 git 에서 관리가 어려울 것 같아 멀티 모듈로 만들어보려고 한다 !!!
프로젝트 우클릭 -> new -> module
을 선택하면 spring 프로젝트 생성하는 창이 동일하게 나오는데 거기서 원하는 대로 세팅을 해서 생성해주면 된다
나는 api 서버 2개랑 게이트웨이를 만들어줬따
이런식으로 구성이 되게 된다
최상위의 src 는 사용하지 않을거니까 지워도 된다 (근데 혹시 몰라서 일단 남겨놓음 .. ㅎㅎ)
각각의 서버를 실행할 수 있게 된다 ! 여러개의 서버를 한개의 repo 에서 관리하는것이 가능하게 된다는 말씀
모든 모듈에서 사용하는 설정은 최상위에서 설정을 해놓으면 (ex. build.gradle) 하위에서도 동일하게 사용이 가능하다 공통화가 가능해짐 (lombok 이나 spring web 같은 애들은 그냥 최상위에 해놓고 써도 괜찮을 듯)
그래서 하위 모듈에서 @RestController 쓰려고했더니 spring web 이 없다면서 안된다고 한다 .. 웨 .. ? 최상위에 해놓으면 다 된다며 ..
최상위에게 어떤 하위 모듈이 있는지를 알려줘야 했던거임 ...
최상위 settings.gradle
rootProject.name = 'toygry'
include 'toygry-api-1'
include 'toygry-api-2'
include 'toygry-gateway'
root 명과 하위 모듈을 include 해야한다
최상위 build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.5'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '21'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
subprojects {
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
java {
sourceCompatibility = '21'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
}
subprojects 안에 하위녀석에게 제공해줄 dependencies 를 적어준다
그럼 이렇게 하위의 모듈에서도 사용이 가능한 모습을 볼 수 있따 ㅜㅜ
그럼 이전(https://j-ungry.tistory.com/381)과 동일하게 세팅 후 통신을 해보도록 하자
짜잔 게이트 웨이 통해서 요청을 보냈을때에 정상적으로 응답하는 것을 확인할 수 있다 ! + keycloak 을 통한 인증 인가도 가능하다