0%

Java8とEmacsでSpring Boot - Part2: Spring Loadedを使いHot code reload

ここ数年は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ファイルの再作成と置換をツールが面倒をみてくれます。

Emacsの場合

build.gradleのbuildscript > dependenciesに、springloadedのクラスパスを追加します。

~/helloworld/build.gradle
buildscript {
...
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("org.springframework:springloaded:1.2.1.RELEASE")
}

gradleのbootRunタスクを実行して、組み込みのTomcatを使いアプリを起動します。

$ ./gradlew bootRun

Tomcatが起動中にJavaのソースコードを編集しても自動的にコンパイルしてくれないので、適当なタイミングで手動でコマンドを実行します。bootRunを実行したままでhot reloadができるので、Tomcatの再起動は不要です。

$ ./gradlew compileJava