这几天学习了怎样使用maven,最终还是要回归web项目嘛,所以主要还是使用eclipse插件。
1 下载eclipse maven插件。
其实新版的eclipse已经集成了maven:lunar、mars,不知为什么我的没有,于是我又下载了一个最新版eclipse mars。在windows->preferences下可以找到maven说明eclipse已经有了maven插件。
当然还可以修改eclipse的maven安装路径,指向本地,这样就可以配置你的maven仓库路径了,在这里为了方便不修改。
2 在eclipse中新建web项目
先回顾一下maven的目录结构。
框出的就是web项目必须的文件。
2.1 新建maven web项目
2.1.1 在项目中new一个项目 叫做maven project
2.1.2 在向导中点下一步就行了 选项中一定要新建一个maven-archetype-webapp
2.1.3 在输入项目名称之后新建完成
2.2 手动修改maven目录结构
2.2.1 新建之后的目录结构是这样子的,可能maven版本不同结构不同,可见这个文件结构不完整,至少少了src-main-java和src-test-java(不清楚为什么工具不把这两个建上去呢)我们加上去。
于是,新建后目录结构终于完整了。
2.2.2 还要修改源文件maven目录的java源文件编译路径,项目邮件在java buildpath 里面设置。eclipse已经自动帮我们加上去了。我感觉只要把源文件目录加进去就行了,不一定要完全按照目录设置,当然编译后要放在target文件夹里面。
2.2.3 设置项目部署路径,因为部署到tomcat的时候都是把源文件资、源文件和项目用到的jar包扔到一个webapp文件里面然后再扔到tomcat的,项目右键属性,然后在deployment assembly里面设置,文件夹就是最后的打包的结构,少加多减,另外test目录是不用加进去的。
准备工作完成。
2.3 构建maven spring mvc项目
完成后项目的目录结构是这样的
2.3.1 maven通过pom.xml添加依赖,就不用手动导入jar包了,十分方便。我们分别在pom.xml中添加java ee的依赖和spring的依赖,添加之后,我们在项目中就看到maven自动为我们下载jar包到项目中。
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hao</groupId> <artifactId>mavenweb</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>mavenweb Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- jsp、servlet 的依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!-- spring mvc的依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.1.RELEASE</version> </dependency> </dependencies> <build> <finalName>mavenweb</finalName> </build> </project>
2.3.2 导入了spring jar包之后,我们就可以新建一个helloworld项目了。我用比较旧的配置文件方式吧。
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>mavenweb</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.hao" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> </bean> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <bean name="/hello.do" class="com.hao.Hellomvc"></bean> </beans>
Hellomvc.java
package com.hao; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class Hellomvc implements Controller { public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub ModelAndView mv=new ModelAndView("index"); mv.addObject("mvstr", "Hello World!"); return mv; } }
index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <body> <h2><c:out value="${mvstr}"> </c:out></h2> </body> </html>
代码就是在Hellomvc返回一个“helloworld”到index.jsp里面,应该还算是springmvc的最简单的例子吧。接下来把它放到tomcat里面运行就好了,用eclipse的tomcat插件应该可以,但是我想用maven的tomcat插件。
3 使用maven tomcat插件运行web项目
3.1 编辑tomcat的tomcat-users.xml
maven 的tomcat插件帮助我们打包然后将整个文件扔到tomcat的webapp里面,并通知tomcat重启运行。
maven调用tomcat的方式好像是通过tomcat的manager-script和manager-gui,但我们把几个角色都开起来吧。在本机的tomcat的conf文件夹找到tomcat-users.xml,增加几个权限给maven用。
<tomcat-users> <!-- NOTE: By default, no user is included in the "manager-gui" role required to operate the "/manager/html" web application. If you wish to use this app, you must define such a user - the username and password are arbitrary. --> <!-- NOTE: The sample user and role entries below are wrapped in a comment and thus are ignored when reading this file. Do not forget to remove <!.. ..> that surrounds them. --> <role rolename="manager-gui"/> <role rolename="manager"/> <role rolename="manager-script"/> <user username="tomcat" password="tomcat" roles="manager-gui"/> <user username="admin" password="123456" roles="manager,manager-gui,manager-script"/> </tomcat-users>
3.2 在pom.xml增加tomcat插件依赖 (用户名密码要与tomcat-users.xml里面的对应)
...... ...... <build> <finalName>mavenweb</finalName> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://localhost:8080/manager/text</url> <path>/mavenweb</path> <server>tomcat</server> <username>admin</username> <password>123456</password> </configuration> </plugin> </plugins> </build> ...... ......
3.3 准备完毕,右键点击pom.xml,再输入maven运行命令就行了。
run as->maven build
tomcat6/7:redeploy
控制台输出成功信息,部署成功
输入:http://localhost:8080/mavenweb/hello.do 出现helloworld!
大功告成!
附上maven tomcat插件命令
新增一条修改maven仓库配置的
11:29:04 2015-09-30