一、Maven 介绍
1、什么是 Maven
Maven 是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在声明周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
2、Maven 能解决什么问题
(1)可以替我们管理 jar 包;
(2)可以替我们编译文件;
(3)可以执行单元测试;
(4)可以让配置文件和代码实现分离,整合;
二、Maven 的两个经典作用
1、Maven的依赖管理
maven 的一个核心特性就是依赖管理,当设计到模块的项目(包含成百个模块或者子项目),管理依赖就变成一项困难的任务。Maven 展示出了它对处理这种情形的高度控制。
maven 工程如何管理 jar 包的:
分析如下:
通过分析出现:maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar 包的坐标,这样就很好的避免了 jar 直接引入进来,在需要用到 jar 包的时候,只要查找 pom.xml 文件 ,再通过 pom.xml 文件中的坐标,到一个专门用于 “存放 jar 包的仓库”中根据坐标从而找到这些 jar 包,再把这些 jar 包拿去运行。
通过 pom.xml 文件配置要引入的 jar 包的坐标,再读取坐标并到仓库中加载 jar 包,这样我们就可以直接使用 jar 包了,为了解决这个过程中速度慢的问题, maven 中也有索引的概念,通过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再读取出来的速度是一样的。这个过程就好比我们查阅字典时,为了能够加快查找到内容,书前面的目录就好比是索引,有了这个目录我们就可以方便找到内容了,一样的在 maven 仓库中有了索引我们就可以认为可以快速找到 jar 包。
2、项目的一键构建
往常的项目,都要经历编译、测试、运行、打包、安装,部署等一些列过程。
构建:指的是项目从编译、测试、运行、打包、安装,部署整个过程都交给 maven 管理,这个过程称为构建。
一键构建:指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。
Maven 规范化构建流程如下:
三、Maven 的使用
1、Maven的安装
(1)Maven 的下载
链接地址:Maven 下载
点击 Download 链接,直接进入到 Maven 软件的下载页面。
下载后的版本如下:
(2)Maven 软件的安装
Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下,比如 D:\software\maven 下面。
解压后目录结构如下:
bin:存放了 maven 的命令
boot:存放了一些 maven本身的引导程序,如类加载器等
conf:存放了一些 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 本身运行所需的一些 jar 包
注意:在使用 maven 软件前,保证电脑是上已经安装并配置好了 JDK。
(3)JDK 的准备及统一
JDK 环境:
(4)Maven 及 JDK 配置
电脑上安装 Java 环境,安装 JDK1.7+ 版本,将 JAVA_HOME/bin 配置环境变量 path。
配置 MAVEN_HOME ,变量值就是 maven 安装的路径(bin 目录之前一级目录)
(5)Maven 软件版本测试
通过 mvn -v 命令检查 maven 是否按照成功,看到 maven 的版本即为安装成功。
打开 cmd 命令,输入 mvn -v 命令,如下图:
2、Maven 仓库
(1)Maven仓库的分类
maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
maven 仓库的类型:
本地仓库:用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找,默认本地仓库位置在 ${user.dir}/.m2/repository, ${user.dir}表示 windows 用户目录。
远程仓库: 如果本地需要插件或者 jar 包,本地仓库没有, 默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。
中央仓库:在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。
(2)Maven 本地仓库的配置
在MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置(maven 的安装目录下):
打开 setting.xml 文件,配置如下:
在 setting.xml 里面,如果使用默认的中央仓库,访问速度很慢,可以把中央仓库配置为阿里云仓库。
1 <mirrors>
2 <!-- 阿里云maven中央仓库映像配置-->
3
4 <mirror>
5 <id>alimaven</id>
6 <name>aliyun maven</name>
7 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
8 <mirrorOf>central</mirrorOf>
9 </mirror>
10
11
12 </mirrors>
(3)全局 setting 与用户 setting
maven 仓库地址、私服等配置信息需要在setting.xml 文件中配置,分为全局配置和用户配置。
在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project项目,它作为 maven 的全局配置。
如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在: ${user.dir}/.m2/settings.xml 目录中,${user.dir} 指 windows 中的用户目录。
maven 会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。
3、Maven 工程的认识
(1)Maven 工程的目录结构
作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。
进入 src 目录后,发现它里面的目录结构如下:
src/main/java —— 存放项目的 .java 文件
src/main/resources —— 存放项目资源文件,如 spring,Hibernate 配置文件
src/test/java —— 存放所有单元测试 .java 文件,如 JUnit 测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置,编译后的 .class 文件会输出到此目录
pom.xml —— maven 仙姑核心配置文件
注意:如果是普通的 java 项目,那么就没有 webapp 目录。
(2)Maven 工程的运行
进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat:run 命令
(3)问题处理
如果本地仓库配置错误会报下边的错误
分析:
maven 工程运行先从本地仓库找 jar 包,本地仓库没有再从中央仓库找,上边提示 downloading…表示 从中央仓库下载 jar,由于本地没有联网,报错。
解决:
在 maven 安装目录的 conf/setting.xml 文件中配置本地仓库,参考:“maven 仓库/配置本地仓库章节”。