오토 리로드(Auto-reload)
오토 리로드(Auto-reload)
개발 중에 서버를
제한 사항
오토 리로드는 특정 모듈 선언에서만 작동합니다. 다음 표는 버전별 지원 여부를 보여줍니다.| 모듈 유형 | <= 3.2 | > 3.2 |
| 람다 초기화(Lambda initializer) | ❌ 지원되지 않음 | ❌ 지원되지 않음 |
| 블로킹 함수 참조(Blocking function reference) | ✅ 지원됨 | ❌ 지원되지 않음 |
| 서스펜드 함수 참조(Suspend function reference) | ❌ 지원되지 않음 | ✅ 지원됨 |
| 설정 참조(Config reference) | ✅ 지원됨 | ✅ 지원됨 |
개발 모드 활성화
오토 리로드를 사용하려면 먼저 개발 모드를 활성화해야 합니다. 이는
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태스크를 실행하면 됩니다.BashTIP
프로젝트를 다시 로드할 때 테스트 실행을 건너뛰려면
build태스크에-x옵션을 전달할 수 있습니다.Bash
