web-dev-qa-db-ja.com

Spring boot devtools-静的コンテンツの再読み込みはIntelliJで機能しません

最初のSpring Bootアプリを構築したとき、/ resources/static/some-file.jsのJavascriptファイルを変更するたびにアプリを再起動する必要があることを発見しました

これには非常に時間がかかります。

ファイルを/ webapps /フォルダーに移動すると、期待どおりに動作しますが、ファイルはJARにパッケージ化されません。ドキュメントではこれに言及しているため、この方法を続けることはできません。

私はspring-boot-devtools、および私のPOMにインストールしましたが、ホットスワップは機能しません。 JavascriptまたはCSSファイルの変更を確認するには、アプリ全体を再起動する必要があります。

アプリが起動すると、LiveReload server is running on port 35729、 そう spring-boot-devtoolsは何かをする必要があります...

何が間違っているのかをさらに調査する手順は何ですか?

私の推測では、IntelliJがアプリを実行するとファイルがコピーされるため、変更を加えると、実行中のアプリで使用されているファイルではなく、元のファイルが実際に変更されます。

PS:Maven、IntelliJ IDEA 15および埋め込みTomcatサーバーでのSpring Boot 1.3.3を使用しています。IntelliJがアプリを起動するために実行するコマンドがわかりません。IDEはこれを「自動的に」処理しています。おそらく、実行構成を変更する必要がありますか?

28
Wouter

これを機能させるには、IntelliJのいくつかの機能をオンにする必要があります。

最初に、devtoolsを使用するプロジェクトに適用する必要があるプロジェクト固有の設定があります。[設定]> [コンパイラ]に移動し、[プロジェクトを自動的に作成する]を有効にします。

次の設定は、すべてのプロジェクトに適用されるIDEA=レジストリ設定です。

  • MacOS(OSX)では、Shift+Command+AShift+Ctrl+A Windowsの場合)
  • 表示される検索ボックスに「レジストリ」と入力し、レジストリを選択して開きます。
  • ルックアップcompiler.automake.allow.when.app.runningで有効にします。

その後、アプリを再起動します。変更を加えるたびにプロジェクトが再構築され続けることに気付くでしょう。ブラウザで結果をチェックアウトすると、静的ファイルとコードの両方が更新されていることがわかります。

85
Patrick Grimard

Windowsユーザーの場合、手順は次のとおりです。
1)[ファイル]、[設定]、[ビルド、実行、展開]の順にクリックし、[コンパイラー]をクリックして、[プロジェクトを自動的に作成する]フラグを有効にします。
2)Ctrl-Alt-Shift- /を押し、表示されるメニューから「レジストリ」を選択します。 compiler.automake.allow.when.app.runningフラグを有効にします。
3)アプリを起動/再起動し、静的コンテンツの再読み込みを確認します。

14
Daniil Shevelev

Macユーザーの場合、押す必要がありました Command + Shift + A

そして、レジストリオプションが表示されていなかったStep1およびStep2の後にINTELLIJを再起動します。

1
raj vivid

Linuxでは、次を押します。

Ctrl-Alt-Shift-/

0