IntelliJ IDEA TomcatでWebアプリケーションを起動する
IntelliJ IDEAでTomcatサーバを実行しJavaアプリケーションを実行する
IntelliJ IDEAでJava Webアプリケーションを開発する際、APサーバとしてTomcatを利用する方法を記載する。
環境
- OS : Mac OS X
Tomcatのインストール
$ brew install tomcat
IntelliJ IDEAのRun/Debug設定
Run/Debug Configurations > Add New Configuration > Tomcat Server > Local を選択
Deploymentタブ Add から Artifact... を選択し Pom.xmlで設定されたBuildを選択する
設定したRun/Debug Configurationを実行することでアプリケーションが起動する
hot swap設定
hot swap(hot deploy)は、APサーバを再起動することなくコードの変更をAPサーバに反映させること。
Run/Debug Configurationより作成したTomcat実行設定を開く
" On 'Update' action を Update classes and resourcesに設定する。
Debugモードでアプリケーションを起動する
Debugモードでないとhot swapが有効にならないらしい。 https://www.jetbrains.com/help/idea/2016.2/reloading-classes.html
hot swapの利用
上記の設定後は、DebugモードでTomcatを起動して、ファイルを編集後、Updateをすることで反映される。
Javaファイルを編集する コードを変更する
Update ボタンを押す(command + F10) これがよくわかならなかった。勝手に反映されると思っていたが、Updateをしないといけない。(自動アップデート設定もできるのだが、InteliJ IDEAのファイル編集は保存。っていうアクションがないので、自動を設定しても、1度APサーバの動作後に反映される形になる。どうも反映されるタイミングがしっくりこないので、自分でUpdateする方がわかりやすかった。)
ちなみに
いろいろと設定を触っているうちにわかったこと。結構直感的にわからない。。。英語の理解力がないからかも。
Preferences > Build, Execution, Deployment > Debugger > HotSwap の設定
Reload classes after compilation をAlwaysにした場合、Updateをしなくても、APサーバが動作を行うと、変更が通知される。ただし、APサーバが1度でも動作しないと反映がされないので、1アクセス反映が遅れてしまった。
Run/Debug ConfigurationのOn frame deactivationの設定
こちらは、IntelliJ IDEAから別のアプリケーションにカレントのアプリケーションが切り替わった場合(表現が難しいが、ようは別のアプリケーションをアクティブにした場合)の動作の設定。Update classes and resourcesに設定して、コードを編集後、例えばブラウザなどにフォーカスを移動した場合、hot swapが実行された。