Skip to content

오토 리로드(Auto-reload)

오토 리로드(Auto-reload)

개발 중에 서버를

재시작
Learn how to run a server Ktor application.
하는 것은 다소 시간이 걸릴 수 있습니다. Ktor는 코드 변경 시 애플리케이션 클래스를 다시 로드하고 빠른 피드백 루프를 제공하는 오토 리로드(Auto-reload)를 통해 이러한 제한을 극복할 수 있게 해줍니다. 오토 리로드를 사용하려면 다음 단계를 따르세요.

제한 사항

오토 리로드는 특정 모듈 선언에서만 작동합니다. 다음 표는 버전별 지원 여부를 보여줍니다.
모듈 유형<= 3.2> 3.2
람다 초기화(Lambda initializer)❌ 지원되지 않음❌ 지원되지 않음
블로킹 함수 참조(Blocking function reference)✅ 지원됨❌ 지원되지 않음
서스펜드 함수 참조(Suspend function reference)❌ 지원되지 않음✅ 지원됨
설정 참조(Config reference)✅ 지원됨✅ 지원됨

지원됨

kotlin

지원되지 않음

kotlin

개발 모드 활성화

오토 리로드를 사용하려면 먼저 개발 모드를 활성화해야 합니다. 이는

서버를 생성하고 실행
Learn how to create a server depending on your application deployment needs.
하는 방식에 따라 달라집니다.

  • EngineMain을 사용하여 서버를 실행하는 경우, 설정 파일에서 개발 모드를 활성화하세요.

  • embeddedServer를 사용하여 서버를 실행하는 경우, io.ktor.development 시스템 속성을 사용할 수 있습니다.

개발 모드가 활성화되면 Ktor는 작업 디렉터리의 출력 파일을 자동으로 감시합니다. 필요한 경우, 감시 경로를 지정하여 감시할 폴더 세트를 좁힐 수 있습니다.

감시 경로 구성

개발 모드를 활성화하면 Ktor는 작업 디렉터리의 출력 파일을 감시하기 시작합니다. 예를 들어, Gradle로 빌드된 ktor-sample 프로젝트의 경우 다음 폴더들이 감시됩니다.

감시 경로(Watch paths)를 사용하면 감시할 폴더 세트를 좁힐 수 있습니다. 이를 위해 감시할 경로의 일부를 지정할 수 있습니다. 예를 들어, ktor-sample/build/classes 하위 폴더의 변경 사항을 모니터링하려면 감시 경로로 classes를 전달합니다. 서버를 실행하는 방식에 따라 다음과 같은 방법으로 감시 경로를 지정할 수 있습니다.

  • application.conf 또는 application.yaml 파일에서 watch 옵션을 지정합니다.

    yaml

    다음과 같이 여러 감시 경로를 지정할 수도 있습니다.

    yaml

    전체 예제는 여기에서 확인할 수 있습니다: autoreload-engine-main.

  • embeddedServer를 사용하는 경우, watchPaths 매개변수로 감시 경로를 전달합니다.

    Kotlin

    전체 예제는 autoreload-embedded-server를 참조하세요.

변경 시 재컴파일

오토 리로드는 출력 파일의 변경 사항을 감지하므로, 프로젝트를 다시 빌드해야 합니다. IntelliJ IDEA에서 수동으로 다시 빌드하거나 Gradle의 -t 명령줄 옵션을 사용하여 연속 빌드 실행(continuous build execution)을 활성화할 수 있습니다.

  • IntelliJ IDEA에서 프로젝트를 수동으로 다시 빌드하려면 메인 메뉴에서 Build | Rebuild Project를 선택하세요.

  • Gradle을 사용하여 프로젝트를 자동으로 다시 빌드하려면 터미널에서 -t 옵션과 함께 build 태스크를 실행하면 됩니다.

    Bash

    TIP

    프로젝트를 다시 로드할 때 테스트 실행을 건너뛰려면 build 태스크에 -x 옵션을 전달할 수 있습니다.

    Bash