環境:
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