終了せずにSBTの実行をどのように終了しますか?
CTRL + Cを試行していますが、SBTを終了します。SBTを開いたまま、実行中のアプリケーションのみを終了する方法はありますか?
Ctrl + D
Playフレームワークでのみ機能すると思います。
終了せずにSBTの実行をどのように終了しますか?
CTRL + Cを試行していますが、SBTを終了します。SBTを開いたまま、実行中のアプリケーションのみを終了する方法はありますか?
Ctrl + D
Playフレームワークでのみ機能すると思います。
回答:
デフォルトの構成では、実行はsbtが実行されているのと同じJVMで行われるため、簡単に個別に強制終了することはできません。
Forkingで説明されているように、別のフォークされたJVMで実行すると、sbtのJVMに影響を与えることなく、そのJVMを(オペレーティングシステムが提供する手段で)強制終了できます。
fork in run := true
kill
コマンドラインから、またはタスクマネージャで(Windowsの場合)、または強制終了またはなどアクティビティモニタする(Mac OS X)は、
kill -9 `ps -h | grep java | grep -v sbt-launch | grep -v grep | awk '{print $1}'`
run
CTRL + Dで殺す必要がある
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シェルからアプリケーション(build.sbt内)に転送するように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とシャットダウンを読み取ることができます。
最後に、sbtを起動し、オプションで実行したいサブプロジェクトに切り替え、実行します。
ここで、プロセスを停止する場合は、sbtシェルでCTRL-Dを入力して、そのstdinを閉じます。
sbt-revolverの使用を検討してください。社内で使用しており、重宝しています。あなたが求めていることのために次のことを行うことができます:
reStart
reStop
build.sbtファイルを構成する必要はありません。
以下を追加することで、このプラグインを使用できます。
addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1")
あなたのプロジェクト/plugins.sbtに
Ctrl+D
動作しません。