1. Maven的简介
1.1 Maven 是什么?
Maven是一个跨平台的项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
1.2 约定优于配置
|------------目录-------------|--------------目的-------------|
|${basedir} |存放pom.xml和所有的子目录 |
|${basedir}/src/main/Java |项目的 java源代码 |
|${basedir}/src/main/resources|项目的资源,比如说 property文件|
|${basedir}/src/test/java |项目的测试类,比如说 JUnit代码 |
|${basedir}/src/test/resources|测试使用的资源 |
一个 Maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 classes 会放在 ${basedir}/target/classes 下面, JAR 文件会放在 ${basedir}/target 下面。
1.3 Maven 的优点
(1)对第三方依赖库进行统一的版本管理只要用了 Maven 就不用再为每个项目复制jar了,Maven 会在你需要的时候,自动把这些第三方依赖库找到,你需要编译,Maven 就把这些jar包放到classpath里,你需要打包,Maven 就帮你把需要的jar包都复制到WEB-INF/lib/目录下。
(2)统一项目的目录结构
可以保证所有项目的目录结构都是一样的,每个目录起什么作用都很清楚明了。
(3)统一软件构建阶段
Maven 把软件开发的过程划分成了几个经典阶段,比如你先要生成一些java代码,再把这些代码复制到特定位置,然后编译代码,复制需要放到 classpat 下的资源,再进行单元测试,单元测试都通过了才能进行打包,发布。
以前使用Ant,最令人头疼的就是要为不同的项目写很多build.xml脚本,而且这些脚本还不太通用,现在我们可以使用 Maven 提供的这些经典构建阶段,让每个项目就经过相同的步骤,从源代码一步一步变成可以部署的成品。如果想要什么附加功能,把对应的插件绑定到一个构建阶段上,那么到了执行这个构建阶段的时候,就会执行绑定的插件了。
(4)测试驱动开发
测试是maven生命周期的最重要组成部分之一,并且Maven有现成的成熟插件支持业界流行的测试框架,如Junit和TestNG。
(5)快速构建
只需要一些配置,之后用一条简单的命令就能让Maven帮你清理、编译、测试、打包、部署,然后得到最终产品。
2. Maven 的安装与配置
在安装 maven 前,先保证你安装了JDK。2.1 Maven 下载
Maven官方下载地址:http://maven.apache.org/download.html当前最新版本:Maven 3.2.2
2.2 安装
(1)Windows平台a. 解压发布包(apache-maven-3.2.2-bin.zip),假定为D:\apache-maven-3.2.2。
b. 添加M2_HOME的环境变量,设置变量的值为D:\apache-maven-3.2.2。
c. 更新Path的环境变量,追加 %M2_HOME%\bin; 到Path的变量值上。
d. 可选,添加MAVEN_OPTS的环境变量,设置变量的值为:-Xms256m -Xmx512m.
(2)在Linux平台安装
a. 解压安装
b. 设置环境变量
打开/etc/profile,在文件最后添加c. 要使配置生效
可参考http://maven.apache.org/download.html
2.3 检测安装是否成功
执行命令:mvn –version2.4 配置maven本地仓库的路径
本地仓库默认是在${user.home}/.m2/repository目录下,可通过修改%M2_HOME%\conf\setting.xml进行更改。打开%M2_HOME%\conf\setting.xml文件,在<settings>标签下添加,<localRepository>/path/to/local/repo</localRepository>
3. 用Maven 命令创建一个简单的Maven项目
3.1 构建一个简单Maven项目
maven的大致结构如下:
源代码和资源文件放在 src/main 下面,而测试代码和资源放在 src/test 下面。
3.2 查看pom.xml
groupId, artifactId 和 version 这三个元素定义了一个项目基本的坐标。
groupId 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。
artifactId 定义了当前Maven项目在组织中唯一的ID, 可以理解为项目中的模块, 模块为Maven中最小单位构件。
version 项目的版本。
3.3 构建和运行程序
这个时候, maven 在 helloworld 下面建立了一个新的目录 target/ ,构建打包后的 jar 文件 helloworld-1.0-SNAPSHOT.jar 就存放在这个目录下。编译后的 class 文件放在 target/classes/ 目录下面,测试 class 文件放在 target/test-classes/ 目录下面。
为了验证我们的程序能运行,执行下面的命令: