종속성 추가
서버 의존성 추가하기
이 주제에서는 기존 Gradle/Maven 프로젝트에 Ktor 서버에 필요한 의존성을 추가하는 방법을 보여줍니다.
저장소 구성하기
Ktor 의존성을 추가하기 전에 이 프로젝트의 저장소를 구성해야 합니다.
프로덕션 (Production)
Ktor의 프로덕션 릴리스는 Maven 중앙 저장소(Maven central repository)에서 사용할 수 있습니다. 다음과 같이 빌드 스크립트에 이 저장소를 선언할 수 있습니다.
얼리 액세스 프로그램 (EAP)
Ktor의 EAP 버전에 접근하려면 Space 저장소를 참조해야 합니다.
KotlinGroovyXMLKtor EAP에는 Kotlin 개발 저장소 (dev repository)가 필요할 수 있습니다.
KotlinGroovyXML
의존성 추가하기
핵심 의존성
모든 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 블록은 다음과 같을 수 있습니다.
로깅 의존성
Ktor는 다양한 로깅 프레임워크(예: Logback 또는 Log4j)의 퍼사드(facade)로 SLF4J API를 사용하며, 애플리케이션 이벤트를 로그로 남길 수 있게 해줍니다. 필요한 아티팩트를 추가하는 방법을 알아보려면 로거 의존성 추가하기를 참조하세요.
플러그인 의존성
Ktor 기능을 확장하는
Ktor 버전 일관성 보장
Ktor Gradle 플러그인 사용하기
Ktor Gradle 플러그인을 적용하면 Ktor BOM 의존성이 암시적으로 추가되어 모든 Ktor 의존성이 동일한 버전인지 확인할 수 있습니다. 이 경우 Ktor 아티팩트에 의존할 때 더 이상 버전을 지정할 필요가 없습니다.
게시된 버전 카탈로그 사용하기
게시된 버전 카탈로그(version catalog)를 사용하여 Ktor 의존성 선언을 중앙 집중화할 수도 있습니다. 이 접근 방식은 다음과 같은 이점을 제공합니다.
- 자체 카탈로그에서 Ktor 버전을 수동으로 선언할 필요가 없습니다.
- 모든 Ktor 모듈을 단일 네임스페이스 아래에 노출합니다.
카탈로그를 선언하려면 settings.gradle.kts에서 원하는 이름으로 버전 카탈로그를 생성합니다.
그런 다음 모듈의 build.gradle.kts에서 카탈로그 이름을 참조하여 의존성을 추가할 수 있습니다.
애플리케이션 실행을 위한 엔트리 포인트 생성
Gradle/Maven을 사용하여 Ktor 서버를
embeddedServer를 사용하는 경우 다음과 같이 메인 클래스를 지정합니다.
KotlinGroovyXMLEngineMain을 사용하는 경우 이를 메인 클래스로 구성해야 합니다. Netty의 경우 다음과 같습니다.
KotlinGroovyXML
NOTE
애플리케이션을 Fat JAR로 패키징하려는 경우, 해당 플러그인을 구성할 때 서버를 생성하는 방식도 고려해야 합니다. 다음 주제에서 더 자세히 알아보세요.
- Ktor Gradle 플러그인을 사용하여 fat JAR 생성하기Ktor Gradle 플러그인을 사용하여 실행 가능한 fat JAR을 만들고 실행하는 방법을 알아봅니다.
- Maven Assembly 플러그인을 사용하여 fat JAR 생성하기샘플 프로젝트: tutorial-server-get-started-maven
