관리 메뉴

나만을 위한 블로그

[Ktor] Ktor 프로젝트 생성하고 실행하기 본문

개인 공부/Ktor

[Ktor] Ktor 프로젝트 생성하고 실행하기

참깨빵위에참깨빵_ 2024. 10. 6. 16:42
728x90
반응형

ktor.io에서 제공하는 튜토리얼을 바탕으로 작성했다. 프로젝트 생성은 아래 페이지에서 진행한다.

 

https://start.ktor.io/settings

 

Ktor: Project Generator

 

start.ktor.io

 

Ktor 프로젝트를 빠르게 생성하기 위한 페이지다. 여기서 필요한 플러그인들을 선택하고 프로젝트명을 정할 수 있다.

유료 인텔리제이를 사용한다면 Ktor 플러그인을 써서 프로젝트를 만들 수 있지만 여기선 무료 버전인 인텔리제이 커뮤니티로 진행한다.

우측 상단의 Project artifact 밑에 Configure 버튼이 있는데 이걸 누르면 다른 설정들을 바꿀 수 있다.

 

 

각각은 아래와 같다.

 

  • Build System : Gradle Kotlin, Gradle Groovy, Maven 중 하나를 고를 수 있다. 의존성을 다루는 방식이 각각 다른데, 기본 선택된 Gradle Kotlin으로 진행한다
  • Ktor version : 프로젝트에 적용할 Ktor 버전을 선택한다. ktor.io에선 2.3.12 버전이 stable 버전인 듯 해서 2.3.12로 진행한다
  • Engine : 네트워크 요청을 처리하는 서버 엔진을 선택한다. Netty가 기본 선택이고 그 외에 Jetty, CIO, Tomcat을 선택할 수 있다. 기본값으로 진행한다
  • Configuration : 서버 매개변수를 YAML, HOCON, 코드 중 무엇으로 지정할지 선택한다. 기본값으로 진행한다
  • Include samples : 플러그인용 샘플 코드를 추가하려면 활성화한 상태로 둔다. 기본값으로 진행한다

 

Build System 밑에서 버전 카탈로그를 사용할지 여부를 결정할 수 있다. 체크하지 않아도 자동으로 버전 카탈로그가 적용되니 참고한다.

버전 카탈로그는 의존성 추가 방식이 Gradle Kotlin에서 한층 더 달라진 방식이다. 간단히 어떤 차이가 있는지 보면 Gradle Kotlin의 경우 의존성을 아래처럼 추가한다. 안드로이드에서 사용하는 의존성을 예시로 드는데 대충 어떤 차이가 있는지만 보면 된다.

 

implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1")

 

버전 카탈로그 방식은 안드로이드 기준 libs.versions.toml에 아래처럼 최소 2파트, 최대 3파트로 나눠서 의존성을 관리한다.

 

[versions]
constraintlayout = "2.1.4"
kotlin = "1.9.0"
junit = "4.13.2"

[libraries]
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
junit = { group = "junit", name = "junit", version.ref = "junit" }

[plugins]
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }

 

사용 시에는 아래처럼 사용한다.

 

implementation(libs.androidx.constraintlayout)
testImplementation(libs.junit)

 

대충 이런 차이가 있으니 참고한다. 추가로 엔진에 대해선 아래 링크에서 확인할 수 있고 차이를 표로 정리하면 아래와 같다.

 

https://ktor.io/docs/server-engines.html

 

Choosing an engine | Ktor

 

ktor.io

 

그리고 밑에서 원하는 플러그인을 추가할 수 있다. 몇 개를 추가했냐에 따라 프로젝트 빌드 속도가 달라지니 참고한다.

플러그인은 Routing이 기본 추가돼 있으며 이 상태로 Download 버튼을 누르면 설정 완료된 프로젝트가 다운로드된다. 적당한 곳에 압축을 풀고 인텔리제이로 그 프로젝트를 실행하면 된다. 처음 실행하면 시간이 좀 걸릴 수 있으니 다른 짓 하고 온다.

 


 

프로젝트 로딩이 끝나면 아래와 같은 형태로 프로젝트가 생성된다.

 

 

한번 실행해 본다. src > main > kotlin > com.example 폴더 안의 Application 파일을 확인하면 메인 함수가 있다.

 

package com.example

import com.example.plugins.*
import io.ktor.server.application.*

fun main(args: Array<String>) {
    io.ktor.server.netty.EngineMain.main(args)
}

fun Application.module() {
    configureHTTP()
    configureRouting()
}

 

메인 함수 오른쪽에 녹색 화살표가 표시될텐데 이걸 누르면 프로젝트가 실행된다. 실행이 완료되면 로그캣에 아래 로그가 표시된다.

 

 

127.0.0.1:8000으로 들어가면 Hello World! 가 표시되는 페이지가 표시되고, 로그캣에 뭔가 많은 문자열들이 나타난다.

또는 재생 버튼을 누르지 않고 인텔리제이 화면 우측의 코끼리를 눌러서도 가능하다.

 

 

run을 더블클릭하면 다시 로그캣에 동일한 로그가 표시되며 다시 링크를 클릭하면 이전처럼 Hello World!가 표시된다.

반응형
Comments