前言
Maven主要做的是两件事:
统一开发规范与工具
统一管理jar包
准备工作
java开发环境(JDK)
maven下载地址:http://maven.apache.org/release-notes-all.html
安装
下载 Maven ,其实就是一个压缩包,解压一下
配置一下环境变量
有两个环境变量可以配置:
MAVEN_HOME = D:\maven\apache-maven-3.2.3
MAVEN_OPTS = -Xms128m -Xmx512m(可选)
在path变量末尾加入“%MAVEN_HOME%\bin;”。
最后,验证是否安装成功
现在我们打开 cmd,输入:
mvn -v
了解Maven仓库
使用 Maven 给我们带来的最直接的好处,就是统一管理jar 包,那么这些 jar 包存放在哪里呢?它们就在您的 本地仓库 中,默认地址位于 C:\Users\用户名.m2 目录下(当然也可以修改这个默认地址),下面我们就修改一下这个默认地址。
实际上我们可以将本地仓库理解“缓存”,目的是存放jar包。开发项目时项目首先会从本地仓库中获取 jar 包,当无法获取指定 jar 包的时候,本地仓库会从 远程仓库(或 *仓库) 中下载 jar 包,并“缓存”到本地仓库中以备将来使用。
远程仓库(*仓库)是 Maven 官方提供的,可通过 http://search.maven.org/ 来访问。这样一来,本地仓库会随着项目的积累越来越大。通过下面这张图可以清晰地表达项目、本地仓库、远程仓库之间的关系。
既然 Maven 安装了,那么本地仓库也就有了,默认路径在我们C盘目录下,对于专业人士来说C盘很危险,下面我们修改一下默认配置。
配置
Maven会将下载的类库(jar包)放置到本地的一个目录下,如果想重新定义这个目录的位置就需要修改Maven本地仓库的配置:
修改文件:D:\maven\apache-maven-3.2.3\conf\setting.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localrepository>D:\maven\repository</localrepository>
</settings>
依据该配置,Maven就会将下载的类库保存到D:\maven\repository中。
实验一下我们刚才做的事情产生作用没有,控制台输入:
mvn help:system
如图所示效果:
总结
下面介绍一下maven的常用命令:
mvn archetype:create :创建 Maven 项目
mvn compile :编译源代码
mvn test-compile :编译测试代码
mvn test : 运行应用程序中的单元测试
mvn site : 生成项目相关信息的网站
mvn clean :清除目标目录中的生成结果
mvn package : 依据项目生成 jar 文件
mvn install :在本地 Repository 中安装 jar
mvn eclipse:eclipse :生成 Eclipse 项目文件
在maven项目中,关于pom.xml文件的节点介绍:
<project> :文件的根节点 .
<modelversion> : pom.xml 使用的对象模型版本
<groupid> :创建项目的组织或团体的唯一 Id
<artifactid> :项目的唯一 Id, 可视为项目名
<version> :产品的版本号
<packaging> :打包物的扩展名,一般有 JAR,WAR,EAR 等
<name> :项目的显示名,常用于 Maven 生成的文档
<url> :组织的站点,常用于 Maven 生成的文档
<description> :项目的描述,常用于 Maven 生成的文档
<classifier> : 分类
<outputdirectory> : 定义输出文件夹
<type> : 相应的依赖产品包形式,如jar,war
<scope> : 用于限制相应的依赖范围,包括以下的几种变量
compile :默认范围,用于编译
provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
runtime:在执行时,需要使用
test:用于test任务时使用
system:需要外在提供相应得元素。通过systemPath来取得
<systempath> : 仅用于范围为system。提供相应的路径
<optional> : 标注可选,当项目自身也是依赖时。用于连续依赖时使用