首先说一下Maven是什么。经常听Maven项目好像很高大上的样子,其实Maven只是一个jar的下载工具。配置了Maven的项目,在程序猿的开发机器能够联网的时候,能够自己上网下载程序猿需要的jar包,省去程序猿自己上各个国外官网,忍受着卡爆的网速,找jar包的蛋疼。由于Maven是Apache的项目,Apache在全世界都配有服务站点,因此通过Maven下jar包,是很不错的。同时,现在一些Struts2等国外项目也开始傲娇起来,在官网上通通都只提供自己的Maven依赖,让程序猿自己通过这条Maven依赖在Maven下载,以便他们能够及时更新自己的jar。好吧,JavaWeb的入门门槛又高了起来,你也必须搞懂Maven是什么。其实也不能。
一、Maven的下载
在这里先说这句,这东西的配置其实跟java jdk的配置,基本就是一模一样的。你搞过Java jdk就一定会搞Maven。JDK1.7的配置可以参考《【Java】JDK的下载、安装与部署》(点击打开链接)。其实与Eclipse直接自带JDK一样,Eclipse直接自带了Maven插件,但是,你最好自己配一个最新的Maven给Eclipse,不然总会出现这样那样的问题的。
首先进入Maven的官网,找到Bin版本的zip包,Linux则是tar.gz,下载Maven。http://maven.apache.org/download.cgi如下图:
其下载地址是:http://apache.dataguru.cn/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.zip。如果,你的网络像我一样蛋疼,可以直接扔到下载工具下载。
二、Maven的配置
1、下载之后,解压,选择路径要主要,这个解压目录就是以后你的Maven的工作目录,不要随便找个位置。同时注意文件夹套文件夹的情况。也就是解压之后,先打开解压之后的文件夹,看里面是不是有如下的bin,boot,conf,jar,lib文件夹,同时新建一个jar包,打开conf中的setting.xml,顺便改好Maven的本地仓库路径,也就是Maven下载包会下载的地方。
在conf中的setting.xml找到第55行的位置,在里面的非注释处,加入:
<localRepository>你希望Maven下载jar时的存放路径,也就是Maven本地仓库的路径</localRepository>
如下图,这里是我刚刚新建的jar文件夹:
2、之后右键计算机/我的电脑->管理/属性->高级系统设置(winxp没有)->找到“高级”选项卡->环境变量。
如下图,打开之后新建一个:
变量名:MAVEN_HOME
变量值为你刚才解压Maven的路径,这里是E:\Program Files\apache-maven-3.3.3
确定之后再与Path变量中添加一个%MAVEN_HOME%\bin,如下图,分明就是和配置Java的时候一样:
之后各种确定。
3、运行cmd打开命令行,输入如下命令,看到如下结果则证明Maven在Windows下配置成功!
mvn -version
三、将Maven配置到Eclipse for JavaEE
1、打开Eclipse for Javeee,Windows->Perference->Maven->Installations->Add..->Directory...选择刚刚的Maven路径,点击确定
2、勾选自己添加的Maven,把勾从Eclipse自带的Maven移下来。
3、之后再于User Settings中修改Eclipse中的Maven配置文件。如下图,找到刚才我们修改的Maven安装路径/conf/setting.xml。不改的话,Eclipse中的Maven还是会按照自己自带的配置。下载的Jar包,还是不会去到我们刚刚建立的jar目录。之后再点确定。至此,Maven成功挂在Eclipse for javaee中。
四、新建一个Servlet3.0的Maven项目及其Hello world
1、如下图,新建一个Maven工程
2、工作空间按照默认的就可以
3、之后,如下图,选择一个maven-archetype-quickstart的Filter,快照级别的Maven项目就可以。有什么,我们自己动手,丰衣足食。
4、之后输入Group Id与Artiface Id。Maven项目,要求所有Java包必须符合Java工程的规范,这只是你这个工程所有包名的前缀而已。没有什么大不了的。之后点确定,根据网速的不同,小卡一会儿。Maven工程正式建立完毕。以后只要不修改工程下的pom.xml,Maven一般不会自动更新jar包。
5、新建工程之后先不要做任何事情,先右键工程属性,我们还要配置此Maven工程的一些东西。在Deployment Assembly设置Java工程自动包含Maven依赖包的东西,如下图:
6、之后在Java Build Path如下图,把编译的Java改成Eclipse中已经配好的JDK1.7。
7、之后在Project Facets中添加动态网页模块,在运行环境中添加已经配置好的Tomcat的运行环境。指明此乃JavaEE项目。好了,至此,终于可以点确定了。
8、之后打开pom.xml文件,在pom.xml视图中,删除没有的Junit测试专用包的依赖,并且删除测试专用的Java文件,如下图:
把pom.xml文件修改如下,添加Servlet3.0的依赖,保存退出,Eclipse则会自动在此工程下载相应的Servlet3.0包javax.servlet-api-3.0.1.jar并且添加到这个项目中。
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- 要求Maven下载Servlet3.0的jar包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency> </dependencies> </project>之后,就是Servlet3.0的,简单得不能再简单的内容,在WebContent中的WEB-INF中新建一个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" version="3.0"> </web-app>
新建一个index.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>Hello</title> </head> <body> Hello world! <a href="./hello">Hello</a> </body> </html>再于src/main/java新建一个hello.java如下:
package com.test; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; @WebServlet(name="hello",urlPatterns={"/hello"}) public class hello extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintStream out = new PrintStream(response.getOutputStream()); response.setContentType("text/html;charSet=utf-8"); out.print("hello world"); } }最终的目录结构如下:
之后把这个工程挂载到Tomcat中运行,运行结果如下: