종료하지 않고 SBT 정지 실행
종료하지 않고 SBT에서 실행을 어떻게 종료합니까?
CTRL + C를 시도하고 있지만 SBT를 종료합니다. SBT를 열린 상태로 유지하면서 실행중인 응용 프로그램 만 종료하는 방법이 있습니까?
기본 구성에서 sbt가 실행되는 것과 동일한 JVM에서 실행이 이루어 지므로 개별적으로 쉽게 종료 할 수 없습니다.
Forking 에서 설명한 것처럼 별도의 분기 된 JVM에서 실행하는 경우 sbt의 JVM에 영향을주지 않고 운영 체제가 제공하는 모든 방법으로 해당 JVM을 종료 할 수 있습니다.
fork in run := true
sbt 버전 0.13.5에서 build.sbt에 추가 할 수 있습니다
cancelable in Global := true
"CTRL + C를 사용하여 작업 실행을 중단하는 기능을 활성화 (true) 또는 비활성화 (false)"로 정의합니다. 의 키 정의
Scala 2.12.7+를 사용하는 경우 CTRL + C를 사용하여 컴파일을 취소 할 수도 있습니다. 참조 https://github.com/scala/scala/pull/6479
보고 된 몇 가지 버그가 있습니다.
sbt에서 실행되는 응용 프로그램의 기본 루프를 제어 할 때 다음이 유용하다는 것을 알았습니다.
build.sbt에서 응용 프로그램을 실행할 때 sbt에 포크를 요청합니다.
fork in run := true
또한 sbt에게 stdin을 sbt 셸에서 응용 프로그램 (build.sbt)으로 전달하도록 지시합니다.
connectInput in run := true
마지막으로 응용 프로그램의 기본 스레드에서 stdin에서 파일 끝을 기다린 다음 JVM을 종료합니다.
while (System.in.read() != -1) {}
logger.warn("Received end-of-file on stdin. Exiting")
// optional shutdown code here
System.exit(0)
물론 메인 스레드뿐만 아니라 모든 스레드를 사용하여 stdin 및 shutdown을 읽을 수 있습니다.
마지막으로 sbt를 시작하고 선택적으로 실행하려는 하위 프로젝트로 전환하십시오.
이제 프로세스를 중지하려면 sbt 쉘에 CTRL-D를 입력하여 stdin을 닫으십시오.
sbt-revolver 사용을 고려하십시오 . 우리 회사에서 사용하고 정말 편리합니다. 당신이 요구하는 것을 위해 할 수있는 일 :
reStart
reStop
build.sbt 파일을 구성 할 필요가 없습니다.
다음을 추가하여이 플러그인을 사용할 수 있습니다.
addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1")
프로젝트 /plugins.sbt로
참고 URL : https://stackoverflow.com/questions/5137460/sbt-stop-run-without-exiting
'IT story' 카테고리의 다른 글
| socket.io 서버를위한 Node.js 클라이언트 (0) | 2020.07.19 |
|---|---|
| Express에서 app.configure 사용 (0) | 2020.07.19 |
| macOS에서 터미널을 여는 키보드 단축키 (핫키)가 있습니까? (0) | 2020.07.19 |
| Oauth-로컬 URL로 테스트하는 방법은 무엇입니까? (0) | 2020.07.19 |
| 유창한 검증 대 데이터 주석 (0) | 2020.07.19 |