프로젝트 준비 | Multi-Module Gradle

Faithful Dev·2025년 3월 11일

Gradle에서 Multi-Module 프로젝트는 여러 개의 서브 프로젝트(subproject)로 구성된 프로젝트를 의미한다. 이를 통해 코드의 재사용성을 높이고, 빌드 성능을 향상시키며, 모듈별 독립적인 개발과 배포가 가능하다.


특징

모듈화

  • 여러 개의 서브 프로젝트를 독립적으로 개발할 수 있다.
  • 모듈별로 책임 분리(SRP, Single Responsibility Principle)가 가능하여 유지보수가 쉬워진다.

빌드 성능 향상

  • 변경된 모듈만 빌드할 수 있어 전체 프로젝트를 빌드하는 것보다 빠르다.
  • Gradle의 Configuration on Demand 또는 Gradle Build Cache를 활용하면 더욱 최적화할 수 있다.

코드 재사용성 증가

  • 공통 모듈을 만들어 여러 서브 프로젝트에서 재사용할 수 있다.
  • 예를 들어, core 모듈을 만들어 여러 애플리케이션에서 사용할 수 있다.

독립적인 배포 가능

  • 특정 모듈만 개별적으로 배포할 수 있다.
  • 예를 들어, api 모듈을 하나의 라이브러리(JAR)로 배포하고, app 모듈에서 이를 의존성으로 사용할 수 있다.

Multi-Module 프로젝트 설정

프로젝트 구조 예시

root-project/
├── build.gradle.kts  // 루트 프로젝트 설정
├── settings.gradle.kts  // 서브 프로젝트 정의
├── app/              // 앱 모듈
│   ├── build.gradle.kts
│   ├── src/main/java/com/example/app
│   └── src/test/java/com/example/app
├── core/             // 공통 모듈
│   ├── build.gradle.kts
│   ├── src/main/java/com/example/core
│   └── src/test/java/com/example/core
└── api/              // API 모듈
    ├── build.gradle.kts
    ├── src/main/java/com/example/api
    └── src/test/java/com/example/api

settings.gradle.kts 설정

루트 프로젝트에서 서브 모듈을 정의해야 한다.

rootProject.name = "multi-module-project"

// 서브 모듈 등록
include("app")
include("core")
include("api")

각 모듈의 build.gradle.kts 설정

루트 build.gradle.kts

루트 프로젝트에서는 공통 설정을 관리할 수 있다.

plugins {
    kotlin("jvm") version "1.9.0"
}

allprojects {
    repositories {
        mavenCentral()
    }
}

core 모듈의 build.gradle.kts

공통 기능을 제공하는 모듈이다.

plugins {
    kotlin("jvm")
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib")
}

api 모듈의 build.gradle.kts

다른 모듈을 사용할 수 있도록 core를 의존성으로 추가할 수 있다.

plugins {
    kotlin("jvm")
}

dependencies {
    implementation(project(":core")) // core 모듈 의존성 추가
}

app 모듈의 build.gradle.kts

최종 실행 가능한 애플리케이션 모듈이다.

plugins {
    kotlin("jvm")
    application
}

application {
    mainClass.set("com.example.app.MainKt")
}

dependencies {
    implementation(project(":core")) // core 모듈 사용
    implementation(project(":api"))  // api 모듈 사용
}

빌드 및 실행

전체 프로젝트 빌드

./gradlew build

특정 모듈만 빌드

예를 들어 app 모듈만 빌드하려면:

./gradlew :app:build

실행

app 모듈 실행:

./gradlew :app:run

정리

  • Multi-Module Gradle을 사용하면 프로젝트를 여러 개의 모듈로 나누어 관리할 수 있다.
  • settings.gradle.kts에서 include("모듈명")을 추가하여 서브 프로젝트를 설정한다.
  • 각 모듈은 의존성을 가질 수 있으며, 다른 모듈을 project(":모듈명")으로 참조할 수 있다.
  • 빌드 시간을 최적화하고 코드의 재사용성을 극대화할 수 있다.

Multi-Module Gradle을 활용하면 대규모 프로젝트에서도 효율적인 개발이 가능하다.

profile
Turning Vision into Reality.

0개의 댓글