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を使ってみる。 - Jetty6まで : maven-jetty-plugin -- http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin - Jetty7以降 : jetty-maven-plugin -- http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin 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の例 - 5. Maven による実アプリケーション開発 | TECHSCORE(テックスコア) -- http://www.techscore.com/tech/Java/ApacheJakarta/Maven/5/