[OS X] [Env] [Eclipse] [Jetty] [Maven] Jetty Maven Plugin

スポンサーリンク

Jetty Maven Plugin

環境

OS X Mountain Lion 10.8.2
Oracle Java SE 7u10
Eclipse Juno (4.2) SR1
Jetty 9.0.0.M4

Maven プロジェクトの作成

File – New – Project… とメニューを辿ります.
Maven Project を選択し,Next ボタンを押します.

Screen Shot 2013-01-09 at 11.27.24 PM

New Maven Project  – Select project name and location ウィンドウが開きます.
デフォルトのまま,何も設定しないでそのまま Next ボタンを押します.

Screen Shot 2013-01-09 at 11.32.02 PM

New Maven Project  – Select an Archtype ウィンドウが開きます.
下記を選択します.

Group Id: org.apache.maven.archetypes
Artifact Id: maven-archtype-webapp
Version: RELEASE

その後,Next ボタンを押します.

Screen Shot 2013-01-09 at 11.36.13 PM

次の設定画面が開きます.
パッケージ名を例えば,com.example.homhom とする場合,

Group Id: com.example
Artifact Id: homhom

とでもしておきます.
Package: は,自動的に com.example.homhom となります.
なお,Eclipse のプロジェクト名は,Artifact Id, つまりこの例では homhom となります.

Finish ボタンを押すと,プロジェクトが作成されます.

Screen Shot 2013-01-09 at 11.53.46 PM

プロジェクト作成直後のフォルダ構造は下の通りです.

Screen Shot 2013-01-10 at 12.28.22 AM

src/main/java の作成

maven-archtype-webapp でプロジェクトを作成すると,デフォルトで src/main/resources フォルダは存在していますが,src/main/java フォルダが存在していません.
src/main/java が欲しい,という場合は,src フォルダの下の main フォルダを選択して右クリックし,New – Folder とメニューを辿ります.
Folder name を java とします.

java フォルダの作成と同時に,src/main/java が,ソースフォルダとして自動的に認識されます.

Screen Shot 2013-01-10 at 12.31.17 AM

pom.xml

プロジェクト作成直後の pom.xml は下記の通りです.

Screen Shot 2013-01-10 at 12.33.24 AM

Plugin の設定

プロジェクトのトップフォルダを右クリックし,Maven – Add Plugin とメニューを辿ります.

Screen Shot 2013-01-10 at 12.37.15 AM

Add Plugin ウィンドウが開きます.
jetty-maven-plugin を検索してみます.
org.eclipse.jetty jetty-maven-plugin 9.0.0.M4 [maven-plugin] を選択し,OK ボタンを押します.

Screen Shot 2013-01-10 at 12.39.32 AM

pom.xml が更新され,plugin が自動追記されています.

Screen Shot 2013-01-10 at 12.42.04 AM

Dependency の設定

プロジェクトのトップフォルダを右クリックし,Maven – Add Dependency とメニューを辿ります.

Screen Shot 2013-01-10 at 12.45.21 AM

Add Dependency ウィンドウが開きます.
jetty-server を検索してみます.
org.eclipse.jetty jetty-server 9.0.0.M4 [jar] を選択し,OK ボタンを押します.

Screen Shot 2013-01-10 at 12.47.50 AM

pom.xml が更新され,dependency が自動追記されています.

Screen Shot 2013-01-10 at 12.49.55 AM

HelloServlet.java の作成

src/main/java を選択して右クリックし,New – Class とメニューを辿ります.
HelloServlet.java を作成し,例えば下記のように Hello Servlet を書きます.

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name="HelloServlet",urlPatterns={"/hello"})
public class HelloServlet extends HttpServlet {

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException{

		res.setContentType("text/html");
		res.setCharacterEncoding("UTF-8");
		res.setStatus(HttpServletResponse.SC_OK);

		String str = "<h1>Hello Servlet!</h1>";

		PrintWriter pw = res.getWriter();
		pw.write(str);
		pw.close();

	}

}

Jetty の起動とウェブアプリケーションの実行

プロジェクトのトップフォルダを選択して右クリックし,Run As – Run Configurations… とメニューを辿ります.
Run Configurations ウィンドウが開きます.
Maven Build をダブルクリックすると,New_configuration が作成されます.

Screen Shot 2013-01-10 at 1.16.17 AM

下記のように設定します.

Name: 任意
Base directory: Browse Workspace… からプロジェクトを選択します.その結果,今回の例だと ${workspace_loc:/homhom} と反映されます.
Goal: jetty:run

Apply ボタンを押して設定を確定させ,Run ボタンを押すと Jetty 上でウェブアプリケーションが実行されます.

Screen Shot 2013-01-10 at 1.19.41 AM

Console に最終的に下記のように表示されれば,TCP:8080 で Jetty が稼働しています.

2013-01-10 01:21:05.944:INFO:oejmp.MavenServerConnector:main: Started MavenServerConnector@11ac3cb6{HTTP/1.1}{0.0.0.0:8080}
[INFO] Started Jetty Server

ウェブブラウザで http://(サーバの IP アドレス):8080/hello に接続し,Hello Servlet! と表示されれば OK です.

Screen Shot 2013-01-10 at 1.25.31 AM

プロジェクトの war を作成したい場合

Run Configuration の Goal が jetty:run の場合,war が作成されない状態でウェブアプリケーションが実行されます.
war を作成した上でウェブアプリケーションを実行したい場合,Goal を run-war とします.
war は,デフォルトではプロジェクトフォルダの下の target フォルダ内に “プロジェクト名.war” というファイル名で作成されます.

pom.xml 補足

Jetty がバージョンアップした際に関連するパッケージのバージョンを各々修正するのが面倒な場合,バージョン記述を 1 つにまとめることもできます.

例えば,properties で jettyVersion を記述します.

Screen Shot 2013-01-10 at 1.38.52 AM