环境:
JDK1.7、Maven3.3.9、MyEclipse for Spring 2014
1、Maven下载、安装
Maven是基于项目对象模型(Project Object Model),可以通过一小段描述信息来管理项目的构建、报告和文档的项目管理工具,提供了一个仓库的概念,统一管理项目所依赖的第三方jar包,最大可能避免了由于环境变量的不同在不同电脑之间无法运行的问题,Struts2、Hibernate都是采用maven部署的项目。Maven曾是Jakarta项目的子项目,现为由Apache软件基金会主持的独立Apache项目,下载地址是:Apache Maven 。注意:Maven 3.3 要求JDK 最低 1.7。
将压缩包解压到任意目录,即可看到以下目录:
修改本地仓库路径
maven仓库默认是放在用户目录的.m2隐藏目录下的(Default: ${user.home}/.m2/repository
),Windows系统就是C:\Users\用户名\.m2
;打开%M2_HOME%/conf/setting.xml
文件,找到<localRepository>
标签,将其提取到注释外面,并将其更改为:<localRepository>E:/maven/Repository</localRepository>
。
配置环境变量
验证
在命令行输入 mvn -version
, 看到如下类似信息,表明 Maven 在 Windows 上安装成功。
C:\Users>mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\development\apache-maven-3.3.9
Java version: 1.7.0_67, vendor: Oracle Corporation
Java home: D:\development\Java\jdk1.7.0_67\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"
2、MyEclipse 中集成 Maven
MyEclipse默认安装了maven插件,极大简化了操作。在使用MyEclipse创建项目之前需要进行如下的配置:
1 Window –> Preferences –> MyEclipse –> Maven4MyEclipse –>Installations;
添加本地安装的Maven(自带的可能有错)并选中
2 点击User Settings,改为%M2_HOME%/conf/settings.xml,点击ok。
3、在 MyEclipse 使用 Maven 构建 Java 项目
File –> New –> Other, 输入maven,选中 Maven Project
Next
Next
Next
填写必要信息 –> Finish,等待 MyEclipse 创建 Java 项目,项目结构如下:
4、在 MyEclipse 使用 Maven 构建 Web 项目
File –> New –> Other, 输入maven,选中 Maven Project
Next
Next
输入webapp
,选择maven-archetype-webapp
创建一个webapp目录结构的项目,Next
填Group Id,Artifact Id,和Package,点击 Finish
稍等片刻,等待MyEclipse创建项目
创建的项目结构结构如下:
添加Source Folder (src/main/java,src/main/resources,src/test/java,src/test/resources)
右键项目 –> New –> Source Folder 填写src/main/java
(报错)
右键项目 –> Build Path –> New Source Folder 填写src/main/java
,点击Finish
添加后test目录自动添加
添加src/test/resources
右键项目 –> New –> Source Folder 填写src/test/resources
项目结构如下:
1. src/mian/java 该目录下存放项目的java文件
2. src/mian/resources该目录下存放项目的资源文件(如spring的xml等)
3. src/test/java 该目录下存放项目测试用的java文件
4. src/test/resources该目录下存放项目测试用的资源文件
右键项目 –> Build Path –> Configure Build Path… 点击 Source Tab页,每一项的 Output folder (双击即可修改)
确认 web 项目的输出信息 右键项目 –> Properties –> MyEclipse –> Project Facets
设置部署程序集 右键项目 –> Properties –> MyEclipse –> Deployment Assembly
此处列表是,部署项目时,文件发布的路径。
1. 我们删除 test / m2e-jee 三项,因为 test 是测试使用,并不需要部署
2. 设置将 Maven 的 jar 包发布到 lib 下
编写 Web 的测试代码:
HelloWorldServlet.java
package webapp;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet {
@Override
public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/plain;charset=utf-8");
resp.getWriter().write("Hello World");
}
}
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
<h2>Hello World!</h2>
<a href="hello">HelloServlet</a>
</body>
</html>
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>webapp.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
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.test.maven</groupId>
<artifactId>webapp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--
test:仅测试时有效。
-->
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<!--
provided:编译,测试都有效,但是在运行时并不会加入。例如Servlet API,因为Web容器本身有,如果加入就会出现冲突。
-->
<scope>provided</scope>
</dependency>
</dependencies>
</project>
将项目部署到 tomcat 中,启动测试
注:
1 给jre添加一个运行时参数 -Dmaven.multiModuleProjectDirectory=$M2_HOME
(错误 -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
的解决方案)
2 关键词:
GroupId:一般是公司名或组织名 + 项目名称
ArtifactId:一般是project名(模块名)
Version:版本号
Package:包名
Maven座标:groupId:artifactId:packaging:version
groupId
团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。
来自Sonatype的项目有一个以com.sonatype开头的groupId,而Apache Software的项目有以org.apache开头的groupId。
artifactId
在groupId下的表示一个单独项目的唯一标识符。(即eclipse的项目名称)
packaging
项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。
version
一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,
这种标识给版本加上一个“SNAPSHOT”的标记。
官方说明:Guide to naming conventions on groupId, artifactId and version