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から検索せず
最後にできたプロジェクトの階層