home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

日記/2012/02/26/MavenでServletプログラミングを準備したメモ

作成日: 2012-02-26 19:51:12   /   last updated at: 2012-02-26 20:10:14
カテゴリ: Java 

Maven3, Jetty8, Eclipse 3.7(Indigo), m2eclipse 前提

mvn archetype:generate

で、org.codehaus.mojo.archetype:webapp-xxyy でプロジェクト作成。バージョンは適当に選ぶ。今回はwebapp-jee5を選択。

340: remote -> org.codehaus.mojo.archetypes:webapp-j2ee13 (-)
341: remote -> org.codehaus.mojo.archetypes:webapp-j2ee14 (-)
342: remote -> org.codehaus.mojo.archetypes:webapp-javaee6 (-)
343: remote -> org.codehaus.mojo.archetypes:webapp-jee5 (-)

codehausのarchetypeを選択するメリットとしては、src/main/java 以下のパッケージまでが展開されること。org.apache.maven.archetypes:maven-archetype-webappだと src/main/webapp/ までしか作ってくれない。

このあとEclipseで既存のMavenプロジェクトとしてインポートし、適当にServletクラス作成して、web.xmlに適当に登録する。
プロジェクト右クリックで Maven Build みたいなのを選択し、ゴールに "package" を指定して実行すれば target/ の下にwarファイルが作成される。

これを実行するためにTomcatを使うという手法もあるが、今回はJettyを使ってみる。

pom.xmlに上記ドキュメントに指定されたとおりに jetty-maven-plugin を追加し、EclipseでMavenの "jetty:run" ゴールを指定してデバッグ実行する。
ただこれだけだとソースコードが対応付けられていない。Debugパースペクティブを開きJettyのプロセスを右クリック→ "Edit Source Lookup" ソース探索パスを追加する。プロジェクト単位で追加できるし、Workspaceでごっそりと追加することも可能。
これでブレークポイントなどがソースコードと連携し、デバッグしやすくなる。

Maven + Jettyの何がよいかというと、test系と相性が良くなるようなきめ細かい設定が可能となっている。上述のドキュメントでは 「jetty:start : Starting jetty without first executing the build up to "test-compile" phase」のセクションで integration-test の前後で自動的にJettyを起動・停止するような設定例が書かれている。
またTomcat系の独立したWebApplicationServerと異なりwarファイルのデプロイ、それにともなうサーバのセットアップや設定の調整が不要な点も評価できる。

参考:Maven + Tomcatの例

original url: https://www.glamenv-septzen.net/view/1063