Maven 学习笔记(1)入门篇
2014-08-15 00:29
411 查看
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. 解压安装
tar -xzvf apache-maven-3.2.2-bin.tar.gz -C /var/lib
b. 设置环境变量
打开/etc/profile,在文件最后添加
#set maven environment M2_HOME=/var/lib/apache-maven-3.2.2 export MAVEN_OPTS="-Xms256m -Xmx512m" export PATH=$M2_HOME/bin:$PATHc. 要使配置生效
source /etc/profile
可参考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项目
mvn archetype:generate -DgroupId=com.zing.helloworld -DartifactId=helloworld -Dpackage=com.zing.helloworld -Dversion=1.0-SNAPSHOT -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart
即可在当前目录创建一个简单的maven项目,当你第一次运行 maven 的时候,它会从网上的 maven 库 (repository) 下载需要的程序,存放在你电脑的本地库 (local repository) 中,所以这个时候你需要有 Internet 连接。
maven的大致结构如下:
helloworld |-- pom.xml `-- src |-- main | |-- java | | `-- com | | `-- zing | | `-- app | | `-- App.java | `-- resources | `-- META-INF | `-- application.properties `-- test `-- java `-- com `-- zing `-- app `-- AppTest.java
maven 的 archetype 插件建立了一个 helloworld 目录,这个名字来自 artifactId 。在这个目录下面,有一个 Project Object Model(POM) 文件 pom.xml 。这个文件用于描述项目,配置插件和管理依赖关系。
源代码和资源文件放在 src/main 下面,而测试代码和资源放在 src/test 下面。
3.2 查看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.zing.helloworld</groupId> <artifactId>helloworld</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>helloworld</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
groupId, artifactId 和 version 这三个元素定义了一个项目基本的坐标。
groupId 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。
artifactId 定义了当前Maven项目在组织中唯一的ID, 可以理解为项目中的模块, 模块为Maven中最小单位构件。
version 项目的版本。
3.3 构建和运行程序
cd helloworld mvn package
这个时候, maven 在 helloworld 下面建立了一个新的目录 target/ ,构建打包后的 jar 文件 helloworld-1.0-SNAPSHOT.jar 就存放在这个目录下。编译后的 class 文件放在 target/classes/ 目录下面,测试 class 文件放在 target/test-classes/ 目录下面。
为了验证我们的程序能运行,执行下面的命令:
java -cp target/helloworld-1.0-SNAPSHOT.jar com.zing.helloworld.App
运行成功!
相关文章推荐
- 学习笔记-[Maven实战]-第三章:Maven使用入门(2)
- Maven学习笔记七:Maven使用入门(使用archetype生成项目骨架)
- Maven学习笔记 --- Maven入门笔记四
- Maven学习笔记 --- Maven入门笔记三
- 学习笔记-[Maven实战]-第三章:Maven使用入门(3)
- 学习笔记之maven2学习总结(1,入门起步与实践)
- maven-小白入门学习笔记1
- Maven学习笔记 --- Maven入门笔记一
- maven入门学习笔记1
- Maven学习笔记(八)Maven的入门使用—4. 打包和运行
- Maven学习笔记(八)Maven的入门使用—1.编写POM文件
- maven-小白入门学习笔记2
- Maven学习笔记 --- Maven入门笔记二
- Maven学习笔记之四:Maven使用入门(编写POM)
- 学习笔记之maven2学习总结(1,入门起步与实践) [ 光影人像 东海陈光剑 的博客 ]
- [Spring入门学习笔记][maven]
- 持续集成学习笔记-入门篇(8)成果管理自动化(二):maven项目站点管理
- MAVEN入门指南——学习笔记 4000
- Maven学习笔记 (一)---------------- Maven入门
- 【maven学习笔记】maven基础入门学习中文教程