前言

Maven主要做的是两件事:

统一开发规范与工具

统一管理jar包

准备工作

java开发环境(JDK)

maven下载地址:http://maven.apache.org/release-notes-all.html

安装

下载 Maven ,其实就是一个压缩包,解压一下

Maven下载、安装和配置_jar包

配置一下环境变量

有两个环境变量可以配置:

MAVEN_HOME = D:\maven\apache-maven-3.2.3

MAVEN_OPTS = -Xms128m -Xmx512m(可选)

在path变量末尾加入“%MAVEN_HOME%\bin;”。

Maven下载、安装和配置_xml_02

最后,验证是否安装成功

现在我们打开 cmd,输入:
mvn -v

Maven下载、安装和配置_maven_03

了解Maven仓库

使用 Maven 给我们带来的最直接的好处,就是统一管理jar 包,那么这些 jar 包存放在哪里呢?它们就在您的 本地仓库 中,默认地址位于 C:\Users\用户名.m2 目录下(当然也可以修改这个默认地址),下面我们就修改一下这个默认地址。

实际上我们可以将本地仓库理解“缓存”,目的是存放jar包。开发项目时项目首先会从本地仓库中获取 jar 包,当无法获取指定 jar 包的时候,本地仓库会从 远程仓库(或 中央仓库) 中下载 jar 包,并“缓存”到本地仓库中以备将来使用。

远程仓库(中央仓库)是 Maven 官方提供的,可通过 http://search.maven.org/ 来访问。这样一来,本地仓库会随着项目的积累越来越大。通过下面这张图可以清晰地表达项目、本地仓库、远程仓库之间的关系。

Maven下载、安装和配置_xml_04

既然 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下载、安装和配置_jar_05

总结

下面介绍一下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> : 标注可选,当项目自身也是依赖时。用于连续依赖时使用

Maven下载、安装和配置_jar包_06