めもる

調べたことをメモる。

http4サーバでホットリロードをしたい

使用環境 - OS:macOS Ventura 13.3.1 - sbt:1.8.0 - Scala:3.2.0 - http4s:0.23

sbt-resolverを使用する

github.com

sbt-resolverは以下の機能を備えている。(READMEから引用)

Starting and stopping your application in the background of your interactive SBT shell (in a forked JVM)

Triggered restart: automatically restart your application as soon as some of its sources have been changed

インタラクティブなSBTシェルのバックグラウンドでアプリケーションを起動・停止する(フォークされたJVMの中で)。

トリガーによる再起動:アプリケーションのソースの一部が変更されると、自動的に再起動されます。

導入も非常に簡単で、plugin.sbtに以下を追記するだけ。

addSbtPlugin("io.spray" % "sbt-revolver" % "0.10.0")

sbtを起動し~ reStartコマンドを実行すると、ホットリロードができる。

他のコマンドはこちら。

reStart --- は、フォークされたJVMでアプリケーションを開始します。オプションで指定された(JVM)引数は、reStartArgs/ reStart::javaOptions 設定(以下の「設定」セクションを参照)によって構成されたものに追加されます。アプリケーションがすでに実行されている場合、再起動する前にまず停止されます。

reStopはアプリケーションを停止します。これは、フォークされたJVMを単に強制終了させることで行われます。これは、シャットダウンフックが実行されないことを意味します(#20を参照)ので、注意してください。

reStatusは、アプリケーションの現在の実行状態に関する情報メッセージを表示します。

ただ、起動に5秒、画面に表示する文字をHello World !からこんにちは !に変更をホットリロードに14秒かかった。ちょっと使いづらい😢

もっと良い方法ないかな。。