0Pricing
Scala for Backend Engineering & Functional Programming · 강의

다중 프로젝트 빌드와 배포

대규모 애플리케이션을 위한 다중 프로젝트 SBT 빌드를 구성하고 관리하며 배포를 준비합니다.

다중 프로젝트 빌드와 배포은(는) CoddyKit의 무료 Scala for Backend Engineering & Functional Programming 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Scala for Backend Engineering & Functional Programming 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Scala for Backend Engineering & Functional Programming 강의에는 총 3개의 강의가 포함되어 있습니다.

다중 프로젝트 빌드를 사용하는 이유

스칼라 애플리케이션이 커지면 모든 코드를 하나의 프로젝트에서 관리하기가 어려워질 수 있습니다. 다중 프로젝트 빌드를 사용하면 코드베이스를 체계적으로 구성할 수 있습니다.

다중 프로젝트 빌드를 사용하면 다음과 같은 작업을 수행할 수 있습니다.

  • 서로 다른 모듈(예: 핵심 로직, API, 유틸리티)을 분리합니다.
  • 모듈 간 의존성을 명확하게 관리합니다.
  • 애플리케이션의 개별 부분에 특정 설정을 적용합니다.

이러한 방식은 모듈성과 유지 관리성을 향상합니다.

여러 프로젝트 정의하기

SBT에서는 기본 build.sbt 파일 안에 여러 프로젝트를 정의합니다. 각 프로젝트는 일반적으로 lazy val입니다.

루트 프로젝트는 보통 이러한 하위 프로젝트를 집계하거나 이에 의존합니다.

다음은 루트 프로젝트와 두 개의 하위 프로젝트를 구성하는 기본 예시입니다.

lazy val root = project
  .in(file("."))
  .aggregate(core, api)

lazy val core = project
  .in(file("core"))

lazy val api = project
  .in(file("api"))

하위 프로젝트 디렉터리 구조

다중 프로젝트 빌드에서는 일반적으로 각 하위 프로젝트가 프로젝트 루트 수준의 고유한 디렉터리에 있습니다.

표준 구조는 다음과 같습니다.

  • my-app/(루트 프로젝트 디렉터리)
    • build.sbt(주 빌드 파일)
    • project/(SBT 빌드 정의 파일)
    • core/(하위 프로젝트 'core' 디렉터리)
      • src/('core'의 소스 코드)
    • api/(하위 프로젝트 'api' 디렉터리)
      • src/('api'의 소스 코드)

하위 프로젝트 코드 예시

각 하위 프로젝트에는 자체 스칼라 소스 파일이 포함될 수 있습니다. 예를 들어 core 프로젝트에는 간단한 유틸리티가 있을 수 있습니다.

core 프로젝트 안에서 다음 예시를 실행해 보십시오.

package com.coddykit.core

object Greeter {
  def greet(name: String): String = s"Hello, $name!"
}

object CoreApp {
  def main(args: Array[String]): Unit = {
    println(Greeter.greet("CoddyKit"))
  }
}

프로젝트 간 의존성

한 하위 프로젝트에서 다른 하위 프로젝트의 코드를 사용해야 하는 경우가 많습니다. 예를 들어 api 프로젝트에서 core 프로젝트의 Greeter가 필요할 수 있습니다.

build.sbt에서 .dependsOn()을 사용하여 이러한 의존성을 선언합니다.

lazy val root = project
  .in(file("."))
  .aggregate(core, api)

lazy val core = project
  .in(file("core"))

lazy val api = project
  .in(file("api"))
  .dependsOn(core)

공통 설정 공유하기

스칼라 버전이나 공통 의존성과 같은 많은 설정은 모든 하위 프로젝트에서 동일할 수 있습니다.

반복을 피하려면 commonSettings 블록을 정의하고 각 프로젝트에 적용할 수 있습니다.

lazy val commonSettings = Seq(
  scalaVersion := "2.13.8",
  organization := "com.coddykit"
)

lazy val root = project
  .in(file("."))
  .aggregate(core, api)
  .settings(commonSettings)

lazy val core = project
  .in(file("core"))
  .settings(commonSettings)

lazy val api = project
  .in(file("api"))
  .dependsOn(core)
  .settings(commonSettings)

작업 집계하기

루트 프로젝트가 하위 프로젝트를 집계하도록 구성된 경우 루트에서 compile과 같은 작업을 실행하면 집계된 모든 하위 프로젝트에서 해당 작업이 자동으로 실행됩니다.

예를 들어 루트 디렉터리에서 sbt compile을 입력하면 core와 api가 모두 컴파일됩니다.

.aggregate() 메서드가 이 동작의 핵심입니다.

배포를 위한 패키징

애플리케이션을 빌드한 후에는 배포할 수 있도록 패키징해야 합니다. 일반적으로 실행 가능한 JAR(Java 아카이브) 파일을 만든다는 뜻입니다.

다중 프로젝트 빌드에서는 프로젝트의 모든 코드와 의존성을 포함하는 하나의 JAR을 만드는 경우가 많습니다. 이를 '팻 JAR' 또는 '우버 JAR'이라고 합니다.

SBT는 기본적으로 팻 JAR을 만들지 않지만 플러그인을 사용하면 만들 수 있습니다.

팻 JAR을 위한 SBT 어셈블리 플러그인

sbt-assembly 플러그인은 팻 JAR을 만드는 데 널리 사용됩니다. 이 플러그인은 컴파일된 모든 클래스와 의존성을 하나의 실행 가능한 JAR로 묶습니다.

먼저 다음과 같이 project/plugins.sbt에 플러그인을 추가합니다.

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.0.0")

다중 프로젝트 패키징

다중 프로젝트 스칼라 애플리케이션을 배포용으로 패키징하는 방법에 대한 다음 설명 중 TRUE인 것은 무엇입니까?

복습 및 다음 단계

SBT에서 다중 프로젝트 빌드를 구성하고 관리하는 방법을 배웠습니다!

  • build.sbt에서 하위 프로젝트를 정의하는 방법을 살펴보았습니다.
  • 디렉터리를 구성하고 .dependsOn()을 사용하여 프로젝트 간 의존성을 관리하는 방법을 배웠습니다.
  • 공통 설정을 공유하고 작업을 집계하는 방법을 알아보았습니다.
  • 마지막으로 배포를 위한 패키징, 특히 sbt-assembly 플러그인을 사용하여 팻 JAR을 만드는 방법을 살펴보았습니다.

다중 프로젝트 빌드를 능숙하게 다루는 것은 규모가 크고 복잡한 스칼라 애플리케이션에서 모듈성과 효율적인 개발 작업 흐름을 보장하는 데 매우 중요합니다.

자주 묻는 질문

“다중 프로젝트 빌드와 배포” 강의는 무료인가요?

네 — “다중 프로젝트 빌드와 배포” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Scala for Backend Engineering & Functional Programming 강의 전체를 잠금 해제할 수 있습니다. Scala for Backend Engineering & Functional Programming 강의에는 총 3개의 강의가 포함되어 있습니다.

“다중 프로젝트 빌드와 배포”에서 뭘 배우나요?

대규모 애플리케이션을 위한 다중 프로젝트 SBT 빌드를 구성하고 관리하며 배포를 준비합니다. 브라우저에서 직접 실행하는 실습 코드로 Scala for Backend Engineering & Functional Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Scala for Backend Engineering & Functional Programming을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Scala for Backend Engineering & Functional Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.

“다중 프로젝트 빌드와 배포” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Scala for Backend Engineering & Functional Programming 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Scala for Backend Engineering & Functional Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. SBT 프로젝트 설정과 기초
  2. 의존성 관리와 플러그인
  3. 다중 프로젝트 빌드와 배포
← Scala for Backend Engineering & Functional Programming(으)로 돌아가기