Skip to content

종속성 추가

서버 의존성 추가하기

이 주제에서는 기존 Gradle/Maven 프로젝트에 Ktor 서버에 필요한 의존성을 추가하는 방법을 보여줍니다.

저장소 구성하기

Ktor 의존성을 추가하기 전에 이 프로젝트의 저장소를 구성해야 합니다.

  • 프로덕션 (Production)

    Ktor의 프로덕션 릴리스는 Maven 중앙 저장소(Maven central repository)에서 사용할 수 있습니다. 다음과 같이 빌드 스크립트에 이 저장소를 선언할 수 있습니다.

    Kotlin
    Groovy

    NOTE

    프로젝트가 Super POM에서 중앙 저장소를 상속받으므로 pom.xml 파일에 Maven 중앙 저장소를 추가할 필요가 없습니다.

  • 얼리 액세스 프로그램 (EAP)

    Ktor의 EAP 버전에 접근하려면 Space 저장소를 참조해야 합니다.

    Kotlin
    Groovy
    XML

    Ktor EAP에는 Kotlin 개발 저장소 (dev repository)가 필요할 수 있습니다.

    Kotlin
    Groovy
    XML

의존성 추가하기

핵심 의존성

모든 Ktor 애플리케이션에는 최소한 다음 의존성이 필요합니다.

  • ktor-server-core: 핵심 Ktor 기능이 포함되어 있습니다.

  • 엔진 (engine)
    네트워크 요청을 처리하는 엔진에 대해 알아봅니다.
    에 대한 의존성 (예: ktor-server-netty).

다양한 플랫폼을 위해 Ktor는 ktor-server-core-jvm 또는 ktor-server-netty-jvm과 같이 -jvm과 같은 접미사가 붙은 플랫폼별 아티팩트(artifact)를 제공합니다. Gradle은 지정된 플랫폼에 적합한 아티팩트를 자동으로 확인하는 반면, Maven은 이 기능을 지원하지 않습니다. 즉, Maven의 경우 플랫폼별 접미사를 수동으로 추가해야 합니다. 기본 Ktor 애플리케이션의 dependencies 블록은 다음과 같을 수 있습니다.

Kotlin
Groovy
XML

로깅 의존성

Ktor는 다양한 로깅 프레임워크(예: Logback 또는 Log4j)의 퍼사드(facade)로 SLF4J API를 사용하며, 애플리케이션 이벤트를 로그로 남길 수 있게 해줍니다. 필요한 아티팩트를 추가하는 방법을 알아보려면 로거 의존성 추가하기를 참조하세요.

플러그인 의존성

Ktor 기능을 확장하는

플러그인
플러그인은 직렬화, 콘텐츠 인코딩, 압축 등과 같은 공통 기능을 제공합니다.
에는 추가 의존성이 필요할 수 있습니다. 해당 주제에서 더 자세히 알아볼 수 있습니다.

Ktor 버전 일관성 보장

Ktor Gradle 플러그인 사용하기

Ktor Gradle 플러그인을 적용하면 Ktor BOM 의존성이 암시적으로 추가되어 모든 Ktor 의존성이 동일한 버전인지 확인할 수 있습니다. 이 경우 Ktor 아티팩트에 의존할 때 더 이상 버전을 지정할 필요가 없습니다.

Kotlin
Groovy

게시된 버전 카탈로그 사용하기

게시된 버전 카탈로그(version catalog)를 사용하여 Ktor 의존성 선언을 중앙 집중화할 수도 있습니다. 이 접근 방식은 다음과 같은 이점을 제공합니다.

  • 자체 카탈로그에서 Ktor 버전을 수동으로 선언할 필요가 없습니다.
  • 모든 Ktor 모듈을 단일 네임스페이스 아래에 노출합니다.

카탈로그를 선언하려면 settings.gradle.kts에서 원하는 이름으로 버전 카탈로그를 생성합니다.

kotlin

그런 다음 모듈의 build.gradle.kts에서 카탈로그 이름을 참조하여 의존성을 추가할 수 있습니다.

kotlin

애플리케이션 실행을 위한 엔트리 포인트 생성

Gradle/Maven을 사용하여 Ktor 서버를

실행
Ktor 서버 애플리케이션을 실행하는 방법을 알아봅니다.
하는 방식은
서버를 생성
애플리케이션 배포 요구 사항에 따라 서버를 생성하는 방법을 알아봅니다.
하는 방식에 따라 다릅니다. 다음 방법 중 하나로 애플리케이션의 메인 클래스를 지정할 수 있습니다.

  • embeddedServer를 사용하는 경우 다음과 같이 메인 클래스를 지정합니다.

    Kotlin
    Groovy
    XML
  • EngineMain을 사용하는 경우 이를 메인 클래스로 구성해야 합니다. Netty의 경우 다음과 같습니다.

    Kotlin
    Groovy
    XML

NOTE

애플리케이션을 Fat JAR로 패키징하려는 경우, 해당 플러그인을 구성할 때 서버를 생성하는 방식도 고려해야 합니다. 다음 주제에서 더 자세히 알아보세요.