ここ数年はRailsやSinatraを使った開発が多くなったので、開発環境ではアプリケーションサーバー再起動しくてもコードの編集が反映されるのが当たり前のようになっています。Javaはコンパイルが必要なので、classファイルのhot reloadにはEclipseのプラグインなどを使わないと実現が難しかったと思います。RailsでEmacsを使った開発環境に慣れてしまうと、もうEclipseには戻れないので良い方法を探しています。
Spring Loaded
ドキュメントの67. Hot swappingに、Spring Loadedを使ったHot code reloadの方法が書いてありました。
STS(Eclipse)やIntelliJなどのIDEは、ソースコードの保存と同時にコンパイルをしてくれるので、classファイルの再作成と置換をツールが面倒をみてくれます。
- 67.6.1 Configuring Spring Loaded for use with Gradle and IntelliJ
- Hot Swapping in Spring Boot with Eclipse STS
Emacsの場合
build.gradleのbuildscript > dependenciesに、springloadedのクラスパスを追加します。
buildscript { |
gradleのbootRunタスクを実行して、組み込みのTomcatを使いアプリを起動します。
$ ./gradlew bootRun |
Tomcatが起動中にJavaのソースコードを編集しても自動的にコンパイルしてくれないので、適当なタイミングで手動でコマンドを実行します。bootRunを実行したままでhot reloadができるので、Tomcatの再起動は不要です。
$ ./gradlew compileJava |