IntelliJ Community で Tomcat の実行環境を整備する
注意:この記事は IntelliJ Community (無料版) で Tomcat (JavaEE) のプロジェクトを作成するためのものです。
Ultimate (有料版) をご利用の方は以下のサイトなどをご利用ください。
また、環境はWindows10を想定しています。
IntelliJ のインストール
申し訳ありませんが、IntelliJ本体のインストールは無限に解説されていると思うので省略します。
なお、自分で解説サイトを探すのが面倒だという方は以下のリンクを参考にするといいと思います。
Tomcat のインストール
Tomcatは特に開発には必要ありませんが、サーバーとして機能させるならインストールしておいて損はないでしょう。
なお、解説は以下のサイトにお任せします。
プロジェクトの作成
IntelliJを起動したら、新しいプロジェクトの作成をクリックします。
左側のプロジェクトの種類選択からGradleを選択します。
先ほどのサイトで紹介されている通り、JDKのバージョンを指定します。
次へを選択し、アーティファクトIDにプロジェクト名を入力します。
バージョンはとりあえずそのままでいいでしょう。
次へを選択し、自動インポートにチェックを入れて先へ進みましょう。
完了を押して修了です。
設定のいろいろ
IntelliJの設定は、ファイル→設定から開くことができます。
ソースディレクトリの自動生成
ビルド、実行、デプロイ→ビルド・ツール→Gradle の自動的に空のコンテンツ・ルートのディレクトリーを作成する
にチェックを入れることで、自動でソースディレクトリが作成されるようになります。
javadoc のホバー表示を有効化
エディター→一般 の中にあるその他の中の、マウス移動でクイック・ドキュメントを表示するにチェックを入れます。
これにより、Eclipseのようにカーソルを当てるだけでそのコードの情報(javadoc)を表示することが出来るようになります。
プライグインのインストール
設定のプライグインからプライグインを導入することが出来ます。
コードの成形プライグインである google-java-format とコードのフォーマットチェックプライグインである CheckStyle-IDEA の導入をお勧めします。
build.gradle の設定
プロジェクトフォルダの直下に build.gradle というファイルがありますので、それを開きます。
ソース付きのディストリビューションを使用できるように Gradle ラッパーを構成できます。これは、 IDE にGradle API/DSL のドキュメントを提供します。
と表示されるので、OK、提案を適用!を選択するといいと思います。(よく分かってない)
さて、ここからは、このプロジェクトでTomcatアプリケーションを作成するための設定をしていきましょう。
.gradleファイルについては以下を参照ください。
また、 Groovy (.gradleファイルに記述しているスクリプト形式) の文法については、以下を参考にしてください。
まず、以下のようなコードが生成されているはずです。
plugins {
id 'java'
}
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
プライグインの追加
ここの、pluginsにidを追加します。
plugins {
id 'java'
//プロジェクトをwar化できるようにするプライグイン
id 'war'
//Tomcatを1クリックで起動できるプライグイン
id "org.akhikhl.gretty" version "2.0.0"
}
ちなみにwarファイルとそれぞれのプライグインについては以下を参照してください。
コンパイル時のみに利用するAPI追加
実行環境では用意されていますが、 JavaEE のAPIが無ければサーバープログラムをコンパイルすることはできません。
そこで、dependenciesでコンパイル時のみに参照するライブラリを指定します。
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
//コンパイル時のみに利用するライブラリを指定。
compileOnly 'javax:javaee-api:8.0'
}
サーバーのバージョン指定
grettyというプライグインでは、 Jetty と Tomcat という2種類のサーバーを起動することができます。
実際に利用する場合は、以下のコードを追加してください。
gretty {
//ここで、Jetty/Tomcatとバージョンを指定する。
servletContainer = 'tomcat8'
}
なお、ServletContainerで指定できるバージョンは、コチラのサイトを参考にしてください。
生成するwarファイル名指定
次に、warプライグインで生成するwarファイルのファイル名を指定します。
別に特に指定する必要があるわけではないので、必要ない方は飛ばしてください。
war {
archiveName = 'Hoge.war'
}
文字コード指定
コンパイル時の文字コードを変更する場合、以下の2文を追加します。
compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'
ここではUTF-8を指定しています。
ただ、このままでは通信や外部ファイルの読み込み時に文字化けを起こしてしまうことがるので、
実行時の文字コードも変更しておきます。
gettyの内部に以下のように追加します。
gretty {
servletContainer = 'tomcat8'
jvmArgs = ['-Dfile.encoding=UTF-8']
}
jvmArgsに指定した文字列が、java実行時にオプションとして追加されます。
これで、設定ファイルの編集は終了です。
纏めたものを以下に示します。
plugins {
id 'java'
id 'war'
id "org.akhikhl.gretty" version "2.0.0"
}
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compileOnly 'javax:javaee-api:8.0'
}
compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'
gretty {
servletContainer = 'tomcat8'
jvmArgs = ['-Dfile.encoding=UTF-8']
}
war {
archiveName = 'Hoge.war'
}
実行方法
表示→ツールウィンドウ→Gradle を選択すると、Gradleのタスクリスト?のようなものが出てきます。
その中のTasks→gretty→tomcatRunをダブルクリックでTomcatを起動することが出来ます。
これで起動すると、右上の実行ボタンでも操作が出来るようになります。
後々からも呼び出せるように、▷マークの左側にあるドロップダウンから、プロジェクト名[tomcatRun]の保存を行いましょう。
[]の中が別の物だった場合、1度tomcatRunを実行してから再度行いましょう。
オマケ (war生成)
Tasks内のbuildにwarというタスクがあるので、それを実行するとwarプロジェクトをwarファイルとして出力してくれます。
具体的には、生成されるbuildというフォルダにclassファイルなどが格納されており、build内のlibsにwarファイルが置かれています。
warファイルは、Tomcatインストールディレクトリ内のwebapps内に置くことで、Tomcat実行時に http://IP:Port/warファイル名 で参照できるようになります。
追記(Tomcat9が使えるgrettyを導入)
上記手順で入手したgettyはTomcat8までのバージョンしか利用できなかったので、Tomcat9が使えるものを探しました。
・ gretty-gradle-plugin (GitHub)
・ Gretty documentation (公式サイト)
plaginsからorg.akhikhl.gretty を削除し、以下の文を追加します。
apply from: 'https://raw.github.com/gretty-gradle-plugin/gretty/master/pluginScripts/gretty.plugin'
また、sshが制限されたネットワークなど実行時にgretty.pluginが見つからないといった旨のエラーが出る場合、以下の方法でも実行できます。
A problem occurred evaluating root project 'Hoge'.
\> Could not get resource 'https://raw.github.com/gretty-gradle-plugin/gretty/master/pluginScripts/gretty.plugin'.
\> Could not HEAD 'https://raw.github.com/gretty-gradle-plugin/gretty/master/pluginScripts/gretty.plugin'.
> Connect to raw.github.com:443 [raw.github.com/151.101.72.133] failed: Connection timed out: connect
(エラー文)
まず、エラー文にも出ている、gretty.pluginをダウンロードします。
それをbuild.gradleと同様のディレクトリに置いた後、先程追加したapply fromの代わりに以下のように設定します。
apply from: 'gretty.plugin'
追記(pluginsで指定できるようになってた)
以下のようにpluginsでidを指定するだけで実行できるようになってました。
plugins {
id 'java'
id "org.gretty" version "2.3.0"
}
JavaEE開発で役に立ちそうな他記事
-
Cannot cast object エラーが出た
-
データベース連携
-
WebSocketでクライアント開発
-
ログ保存