文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

Intellij IDEA + gradleでspring loadedが動かない問題

spring bootでウェーイしようと思い、IDEをIntellijにしようとしたのですが、何故かspring loadedが動かない問題に遭遇しました。結果的にしょうもないオチがつきましたが解決しました。
f:id:treeapps:20180802010416p:plain

現象

名称 バージョン
Intellij IDEA 14
JDK 1.8
Gradle 2.4
spring-boot-gradle-plugin 1.3.0.BUILD-SNAPSHOT
springloaded 1.2.4.BUILD-SNAPSHOT
spring-boot-starter-web 1.2.3.RELEASE
spring-boot-starter-test 1.2.3.RELEASE

この環境でspring loadedが動きませんでした。

設定はオフィシャルのドキュメント↓を参考にしていました。
86. Hot Swapping

spring boot の起動は以下のように、Controllerから右クリックでRunしていました。
f:id:treeapps:20150616005215p:plain


なんだこりゃ。普通にspring boot起動してるのに、何故かreloadされないな。eclipseだと全くなにもせず起動してるんだけどなあ

必須の設定を確認する

Intellij IDEAとgradleのclassファイルの出力先が違うので合わせる

これはもう有名で、以下を設定する必要があります。
86. Hot Swapping

自動ビルドを有効にする

preferencies -> Build Excution, Deployment -> Compiler -> Make project automatically にチェックを付けます。
f:id:treeapps:20150616010000p:plain
設定としてはこれだけのはず。しかし何故かリロードされず・・・

原因判明


やるお、こういう時は落ち着いてお茶でも飲んでもう一度設定をよく見てみよう。


そうだな。こういう時は大抵しょうもない罠があるもんね。よく見てみるよ。

f:id:treeapps:20150616010347p:plain

ふんふんふーん♪ラーメンうめー♪

・・・・ん?

f:id:treeapps:20150616010835p:plain

・・・・・

only works while not running / debugging
RunやDebugの実行中は自動ビルドは無効だよ〜ん♪テヘ☆


貴様か!!


はい。こいつが罠でした。最初にHelloControllerをIDEA上から起動していましたが、これが誤りです。IDEAから起動してしまうと、起動中は自動コンパイルが無効になってしまうので、spring loadedがうんともすんとも言わない訳でした。。

解決策

IDEAからbootRunするのではなく、普通に以下のようにコンソールからgradle bootRunすればいいのでした。
f:id:treeapps:20150616011908p:plain
これでばっちりspring loadedが有効になってくれます。

雑感

こういう罠があるのでeclipseからIntellij IDEAへの完全移行を躊躇してしまうのですよね。

ちなみに、この方法って合ってるのかどうか不明なので、もし「いや、こうするのが一番楽だよ!」的な解決策があれば、ぜひ教えて下さい!

はじめてのSpring Boot―「Spring Framework」で簡単Javaアプリ開発 (I・O BOOKS)

はじめてのSpring Boot―「Spring Framework」で簡単Javaアプリ開発 (I・O BOOKS)

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築