一、mave安装
mavn地址:http://maven.apache.org/download.cgi
jdk:1.5以上
操作系统:windows(本文章)
maven 下载之后直接解压即可。
二、环境配置
1、环境变量
1 MAVEN_HOME : E:\develop\apache\apache-maven-3.0.5 2 MAVEN : %MAVEN_HOME%\bin 3 MAVEN_HOME 是我的maven的解压目录。
以上直接在windows 的环境变量添加,然后找到 Path,在里面添加:%MAVEN%;即可。
如图:


安装成功后,运行: mvn -v 结果如下:

2、修改仓库地址
maven的仓库用来维护项目的jar包,所有的jar包都在这,一般的目录名字:.m2
maven的默认仓库位置不太好,在c盘,需要我们挪下窝,进入maven目录(解压后目录),进入conf目录找到:
** settings.xml**
然后如下:
1<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 4 <!-- localRepository 5 | The path to the local repository maven will use to store artifacts. 6 | ----------这个是默认仓库位置------ 7 | Default: ~/.m2/repository 8 <localRepository>/path/to/local/repo</localRepository> 9 --> 10 <!-- 这个是新定义的仓库位置--> 11 <localRepository>E:\develop\apache\.m2</localRepository>
三、创建maven项目
创建项目目录(这个你随意,用来放项目的): test
进入test:cd test
执行:
mvn archetype:create -DgroupId=com.maven.test -DartifactId=hello -DpackageName=com.maven.test -Dversion=1.0
运行结果如下,创建成功
1E:\wier\test> mvn archetype:create -DgroupId=com.maven.test -DartifactId=hello - 2DpackageName=com.maven.test -Dversion=1.0 3[INFO] Scanning for projects... 4[INFO] 5[INFO] ------------------------------------------------------------------------ 6[INFO] Building Maven Stub Project (No POM) 1 7....省略 8[INFO] ------------------------------------------------------------------------ 9[INFO] BUILD SUCCESS 10[INFO] ------------------------------------------------------------------------ 11[INFO] Total time: 3.484s 12[INFO] Finished at: Tue Mar 03 11:04:39 CST 2015 13[INFO] Final Memory: 14M/155M 14[INFO] ------------------------------------------------------------------------
以上省略的部分有些在下载jar包,会比较耗时,等待一会儿,执行到 build success的时候就算是成功了。
成功后,hello目录如下:
1└── hello 2 └── src 3 └── main 4 └── java 5 └── com 6 └── com 7 └── maven 8 └── App.java 9 └── pom.xml
其中pom.xml比较重要,所有的依赖都有它维护,后面会介绍详细的,这里我们只关注:
1 <groupId>com.maven.test</groupId> 2 <artifactId>hello</artifactId> 3 <version>1.0</version>
这个是项目的信息.
四、build项目
进入 hello 项目
cd hello
养成好习惯,我们在编译前,先clean下,然后依次的步骤为:clean(清理),compile(编译),Package(打包,可选)
****clean ,清理会把项目依赖的不存在的包重新下载检测下,没有的下载。
1E:\wier\test\hello>mvn clean 2[INFO] Scanning for projects... 3[INFO] 4[INFO] ------------------------------------------------------------------------ 5[INFO] Building hello 1.0 6[INFO] ------------------------------------------------------------------------ 7[INFO] 8[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ hello --- 9[INFO] Deleting E:\wier\test\hello\target 10[INFO] ------------------------------------------------------------------------ 11[INFO] BUILD SUCCESS 12[INFO] ------------------------------------------------------------------------ 13[INFO] Total time: 0.335s 14[INFO] Finished at: Tue Mar 03 11:26:37 CST 2015 15[INFO] Final Memory: 4M/123M 16[INFO] ------------------------------------------------------------------------
compile(编译),编译为可运行.
1E:\wier\test\hello>mvn compile 2[INFO] Scanning for projects... 3[INFO] 4[INFO] ------------------------------------------------------------------------ 5[INFO] Building hello 1.0 6[INFO] ------------------------------------------------------------------------ 7[INFO] 8[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ hello --- 9[debug] execute contextualize 10[INFO] Using 'UTF-8' encoding to copy filtered resources. 11[INFO] skip non existing resourceDirectory E:\wier\test\hello\src\main\resources 12 13[INFO] 14[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ hello --- 15[INFO] Compiling 1 source file to E:\wier\test\hello\target\classes 16[INFO] ------------------------------------------------------------------------ 17[INFO] BUILD SUCCESS 18[INFO] ------------------------------------------------------------------------ 19[INFO] Total time: 1.079s 20[INFO] Finished at: Tue Mar 03 11:28:37 CST 2015 21[INFO] Final Memory: 11M/155M 22[INFO] ------------------------------------------------------------------------
****Package(打包,可选),****一般到compile的时候编译就完成,若是想打包,可以执行这个命令.
1E:\wier\test\hello>mvn package 2[INFO] Scanning for projects... 3[INFO] 4[INFO] ------------------------------------------------------------------------ 5[INFO] Building hello 1.0 6[INFO] ------------------------------------------------------------------------ 7[INFO] 8[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ hello --- 9 10...省略 11Results : 12 13Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 14 15[INFO] 16[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ hello --- 17[INFO] Building jar: E:\wier\test\hello\target\hello-1.0.jar 18[INFO] ------------------------------------------------------------------------ 19[INFO] BUILD SUCCESS 20[INFO] ------------------------------------------------------------------------ 21[INFO] Total time: 2.247s 22[INFO] Finished at: Tue Mar 03 11:32:45 CST 2015 23[INFO] Final Memory: 13M/155M 24[INFO] ------------------------------------------------------------------------
我们来运行测试看下:
1E:\wier\test\hello>java -cp target\hello-1.0.jar com.maven.test.App 2Hello World!
最经典的 hello world 就出来了。
五、加入新包
项目需要引入新包,此时我们维护pom.xml配置就可以,dependencies 用来维护引入包。
比如我们要加入spring-data-mongodb 项目的所有依赖包,
找到**pom.xml,**打开,找到dependencies,加入如下配置:
1<!-- spring-data-mongodb 的jar引入--> 2 <dependency> 3 <groupId>org.springframework.data</groupId> 4 <artifactId>spring-data-mongodb</artifactId> 5 <version>1.5.5.RELEASE</version> 6 </dependency>
保存后,运行下:
mvn clean
maven就会自动下载相关的jar,并引入到项目
六、包版本维护
项目有时候需要用到最新的包,此时只需要 找到对应的dependency ,然后修改下 version即可,然后再执行下:mvn clean
比如我们要把spring-data-mongodb 更新到最新的1.6.2.RELEASE
1<!-- spring-data-mongodb 的jar引入--> 2 <dependency> 3 <groupId>org.springframework.data</groupId> 4 <artifactId>spring-data-mongodb</artifactId> 5 <!-- 更改版本号--> 6 <version>1.6.2.RELEASE</version> 7 </dependency>
保存之后执行:
mvn clean
七、导入eclipse
开发工具都会用到eclipse,目前的项目是没办法导入到eclipse ,目录结构不适合eclipse 。
第一步,让hello项目改变为eclipse目录结构.执行命令:
1cd hello 2mvn eclipse:eclipse
运行后目录结构如下:

第二步,配置eclipse
安装maven就不介绍了,网上自己mark, 这个安装介绍不错:maven安装
我只说下基本配置,三个地方需要处理下。
位置1: maven安装目录
Window --> Preferences -->Maven -->Installations
eclipse 此处设置maven的安装地址,点击add ,设置maven的安装目录.

位置2: Settings ,设置maven 的 setting.xml 配置文件
Window --> Preferences -->Maven -->User Settings
点击Browe,指定maven的setting.xml配置.

位置3:指定maven仓库地址
Window----Perferences-----java-----Build Path-----Classpath Variables
点击new ,新创个name为:M2_REPO path为:E:\develop\apache\.m2
path为仓库地址。

以上配置完毕之后,就可以导入项目到eclipse 了。
八、配置说明
1、pom.xml说明
hello的pom.xml
1<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>com.maven.test</groupId> 6 <artifactId>hello</artifactId> 7 <version>1.0</version> 8 <packaging>jar</packaging> 9 10 <name>hello</name> 11 <url>http://maven.apache.org</url> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 </properties> 16 17 <dependencies> 18 <dependency> 19 <groupId>junit</groupId> 20 <artifactId>junit</artifactId> 21 <version>3.8.1</version> 22 <scope>test</scope> 23 </dependency> 24 25 <!-- spring-data-mongodb 的jar引入--> 26 <dependency> 27 <groupId>org.springframework.data</groupId> 28 <artifactId>spring-data-mongodb</artifactId> 29 <version>1.6.2.RELEASE</version> 30 </dependency> 31 32 </dependencies> 33</project>
Ø project:pom.xml文件中的顶层元素;
Ø modelVersion:指明POM使用的对象模型的版本。这个值很少改动。
Ø groupId:指明创建项目的组织或者小组的唯一标识。GroupId是项目的关键标识,典型的,此标识以组织的完全限定名来定义。比如,org.apache.maven.plugins是所有Maven插件项目指定的groupId。
Ø artifactId:指明此项目产生的主要产品的基本名称。项目的主要产品通常为一个JAR文件。第二,象源代码包通常使用artifactId作为最后名称的一部分。典型的产品名称使用这个格式: <artifactId>- <version>. <extension>(比如:myapp-1.0.jar)。
Ø version:项目产品的版本号。Maven帮助你管理版本,可以经常看到SNAPSHOT这个版本,表明项目处于开发阶段。
Ø name:项目的显示名称,通常用于maven产生的文档中。
Ø url:指定项目站点,通常用于maven产生的文档中。
Ø description:描述此项目,通常用于maven产生的文档中。
2、maven生命周期
**validate:**验证工程是否正确,所有需要的资源是否可用。
**compile:**编译项目的源代码。
**test:**使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
**Package:**把已编译的代码打包成可发布的格式,比如jar。
**integration-test:**如有需要,将包处理和发布到一个能够进行集成测试的环境。
**verify:**运行所有检查,验证包是否有效且达到质量标准。
**install:**把包安装在本地的repository中,可以被其他工程作为依赖来使用。
**Deploy:**在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
**clean:**清除先前构建的artifacts(在maven中,把由项目生成的包都叫作artifact)。
**site:**为项目生成文档站点。