기타

MSA 멀티 모듈 설정

개발자가 될 사람 2024. 4. 24. 19:42

프로젝트 구성


루트 폴더(miri-miri-msa)

  • core-module
  • user-service-module
  • goods-service-module
  • order-service-module

 

그리고 루트 폴더의 settings.gradle 파일과 build.gradle 파일을 다음과 같이 설정한다.

setggins.gradle (root 프로젝트)
rootProject.name = 'miri-miri-msa'

include 'core-module'
include 'user-service-module'
include 'goods-service-module'
include 'order-service-module'

 

build.gradle (root 프로젝트)
plugins {
    id 'java'
}

subprojects {
    apply plugin: 'java'

    repositories {
        mavenCentral()
    }

    dependencies {
        // 공통적으로 사용하는 의존성 정의
    }

    group = 'com.example'
    version = '0.0.1-SNAPSHOT'
}

 

루트 프로젝트의 설정을 마쳤다면 core-module을 제외한 각 모듈의 build.gradle 파일에 다음 내용을 추가한다.

implementation project(':core-module')

 


문제 발생


그리고 Load Gradle Changes를 수행하면 다음 에러가 발생한다.

 

지금까지 Gradle 8.7 환경에서 Java21을 잘 사용해왔는데??

이러한 이유로 Java 버전을 21에서 17로 변환하고 수행해 보았으나 다른 에러가 발생하였다.

 

이유는 다음과 같다.

 


문제 해결


각 모듈에서 core-module을 찾을 수 없다는 에러가 발생한다.

이유를 살펴보니 각 모듈 안에 별도의 settings.gradle 파일이 위치하는 게 문제였다. 해당 settings.gradle 파일들을 삭제한 뒤 다시 Load Gradle Changes를 수행한다.

에러 지옥이 끝나지 않았다...

 

그러나 해당 문제는 간단하게 해결할 수 있다. 각 모듈의 build.gradle 파일 마지막에 다음 라인을 추가해주면 된다!!

tasks.register("prepareKotlinBuildScriptModel"){}

 

이렇게 하면 MSA 환경에서 멀티 모듈 구축이 완료된다!!

 

+ 추가

이 상태에서 자바 버전을 다시 21로 바꾸면 정상적으로 실행된다!!