Maven(Eclipse)

★使い方1:直接にMaven Project作成

新規⇒Maven⇒Maven Project

maven-archetype-webappを選ぶ

★使い方2:動的Web ProjectからMaven Projectに変換

新規⇒Web⇒動的Web Project

最初にできたプロジェクトの階層

出力フォルダーを変更

Maven Projectの設定

1.src/main/java、src/test/java、src/test/resourcesを追加

※新規⇒ソース・フォルダー(一般的なフォルダーではなく)

2.出力フォルダーを設定

src/main/javaとsrc/main/resources⇒target/classes

src/test/javaとsrc/test/resources⇒target/test-classes

web.xmlのパスを指定

最初にできたプロジェクトの階層

3.動的Web Projectに変換

Java⇒1.6、動的Webプロジェクト⇒2.5

プロジェクトを右クリック⇒構成⇒Convert to Maven Project

「より詳しい構成が使用可能...」をクリック

web.xmlのパスを指定

次の操作は左側の「Maven Projectの設定」を参照。

Demo用のソース

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5" >

<context-param>

<param-name>webAppTest</param-name>

<param-value>maven.demo</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.util.Log4jConfigListener

</listener-class>

</listener>

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>

org.springframework.web.filter.CharacterEncodingFilter

</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<servlet>

<servlet-name>dispatcher</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>dispatcher</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>

dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<mvc:annotation-driven />

<context:component-scan base-package="org.xxx.maven" />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/views/" />

<property name="suffix" value=".jsp" />

</bean>

</beans>

TestController.java

package org.xxx.maven.view;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class TestController {

@RequestMapping(value="start.do")

public void start(Model model){

model.addAttribute("output", "こんにちは");

}

}

start.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Demo</title>

</head>

<body>

<c:out value="${output}"></c:out>

</body>

</html>

テストURL

http://localhost:8080/maven-demo/start.do

※「プロジェクト・ファセットのバージョンを動的webモジュールから3.0に変更できません。」

エラーが発生する場合

対応方法:

対象プロジェクトの.settings\org.eclipse.wst.common.project.facet.core.xml

<installed facet="jst.web" version="2.3"/>

<installed facet="jst.web" version="3.0"/>

4.Deployを変更

test関連のフォルダーを除外

※依存jarファイルをpom.xmlに追加したが、ClassNotFoundExceptionが発生する場合に、

「Maven依存関係」は追加されたかどうかを確認

追加方法:追加⇒Java Build Path Entries⇒Maven Dependencies

5.jarファイルを追加

pom.xmlの中身

・jarファイルのscopeについて

compile デフォルト値、Release必要

provided JDK、コンテナが提供。例:servlet.jar

runtime 実行時。例:JDBCドライバ、テスト用

test テスト時。Release不要

system 指定必要。MavenがRepositoryから検索せず

最後にできたプロジェクトの階層