• 中文
    • English
  • 注册
  • 查看作者
  • 什么是Maven

    什么是Maven

      Maven 翻译为 ” 专家 ” 、” 内行 “,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。

      Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

      Maven 也可被用于构建和管理各种项目,例如 C#、Ruby、Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。

    一、Maven的概念

    • Maven的用途

    • 什么是Maven

     

    1.1、Maven的用途

      Maven 是干什么用的?这是很多同学在刚开始接触 Maven 时最大的问题。之所以会提出这个问题,是因为即使不使用 Maven 我们仍然可以进行 B/S 结构项目的开发。从表述层、业务逻辑层到持久化层。再到数据库都有成熟的解决方案——不使用 Maven 我们一样可以开发项目啊!

    什么是Maven

      为什么要使用 Maven?它能帮助我们解决什么问题?

    什么是Maven

    1. 以更轻的方式添加第三方 jar 包

      在今天的 JavaEE 开发领域,有大量的第三方框架和工具可以供我们使用。要使用这些 jar 包最简单的方法就是复制粘贴到 WEB-INF/lib 目录下。但是这会导致每次创建一个新的工程就需要将 jar 包重复复制到 lib 目录下,从而造成工作区中存在大量重复的文件,让我们的工程显得很臃肿。而使用 Maven 后每个 jar 包本身只在本地仓库中保存一份,需要 jar 包的工程只需要以坐标的方式简单的引用一下就可以了。不仅极大的节约了存储空间,让项目更轻巧,更避免了重复文件太多而造成的混乱。

    1. 自动处理 jar 包之间的依赖关系

      jar 包往往不是孤立存在的,很多 jar 包都需要在其他 jar 包的支持下才能够正常工作,我们称之为jar 包之间的依赖关系。最典型的例子是:commons-fileupload-1.3.jar 依赖于commons-io-2.0.1.jar,如果没有 IO 包,FileUpload 包就不能正常工作。那么问题来了,你知道你所使用的所有 jar 包的依赖关系吗?当你拿到一个新的从未使用过的 jar包,你如何得知他需要哪些 jar 包的支持呢?如果不了解这个情况,导入的 jar 包不够,那么现有的程序将不能正常工作。

      再进一步,当你的项目中需要用到上百个 jar 包时,你还会人为的,手工的逐一确认它们依赖的其他 jar 包吗?这简直是不可想象的。而引入 Maven 后,Maven 就可以替我们自动的将当前 jar 包所依赖的其他所有 jar 包全部导入进来,无需人工参与,节约了我们大量的时间和精力。用实际例子来说明就是:通过 Maven 导入commons-fileupload-1.3.jar 后,commons-io-2.0.1.jar 会被自动导入,程序员不必了解这个依赖关系。下图是 Spring 所需 jar 包的部分依赖关系:

    什么是Maven

    1. 统一的 jar 包管理体系

      JavaEE 开发中需要使用到的 jar 包种类繁多,几乎每个 jar 包在其本身的官网上的获取方式都不尽相同。为了查找一个 jar 包找遍互联网,身心俱疲,没有经历过的人或许体会不到这种折磨。不仅如此,费劲心血找的 jar 包里有的时候并没有你需要的那个类,又或者又同名的类没有你要的方法 —— 以不规范的方式获取的 jar 包也往往是不规范的。使用 Maven 我们可以享受到一个完全统一规范的 jar 包管理体系。你只需要在你的项目中以坐标的方式依赖一个 jar 包,Maven 就会自动从中央仓库进行下载,并同时下载这个 jar 包所依赖的其他 jar 包 —— 规范、完整、准确!一次性解决所有的问题!

    1. 将项目细化为多个工程模块

      随着 JavaEE 项目的规模越来越庞大,开发团队的规模也与日俱增。一个项目上千人的团队持续开发很多年对于 JavaEE 项目来说再正常不过。那么我们想象一下:几百上千的人开发的项目是同一个 Web工程。那么架构师、项目经理该如何划分项目的模块、如何分工呢?这么大的项目已经不可能通过 package 结构来划分模块,必须将项目拆分成多个工程协同开发。多个模块工程中有的是 Java 工程,有的是 Web 工程。

    1.2、什么是Maven

      Maven是一款服务于Java平台的自动化构建工具,这里面的 构建 指的就是以 “ Java源文件 ”、“ 框架配置文件 ”、“ JSP ”、“ HTML ”、“ CSS ”、“ 图片 ”等资源为 “ 原材料 ”,去生产一个可运行的项目过程,而这个构建过程可以细分为以下的几个步骤:

    什么是Maven

    1. 清理 :将以前编译得到的 class 字节码文件删除,为下一次编译做准备

    2. 编译 :将 Java 源代码编译成 class 字节码文件

    3. 测试 :自动执行测试代码,调用 Junit 程序

    4. 报告 :输出测试程序的执行结果

    5. 打包 :将工程文件打包为可以被服务器执行或自带服务器的包文件,Web 工程打为 war 包,Java 工程打为 jar 包

    6. 安装 :这是 Maven 中的一个特定概念,指的是将打包得到的文件复制到 “仓库” 的特定位置,便于引用,如果是在本地运行的,一般会安装在指定的本地仓库中。此外,我们也可以将自己写好的工具抽象成依赖,上传到 Maven 中心仓库。

    7. 部署 :将动态 Web 工程生成的 war 包复制到 Servlet 容器的指定目录下,使其可以运行

     

    二、如何安装 Maven

    Maven的官网:

    什么是Maven

      官网上选择对应系统的压缩包文件进行下载即可。此外,关于 Maven 的版本的选择,我建议是下载 3.6.2+ 的版本即可,太旧的版本可能不支持 JDK1.8。

     

    JDK :Maven 3.3+ 版本需要 JDK 1.7 及以上的版本才能执行,但是如果使用 可以让 Maven 向下兼容 1.3 或其他版本的 JDK 项目搭建

    内存 :没有要求

    硬盘 :安装 Maven 需要大约 10 MB 的空间。除此之外,还需要有一部分空闲的空间用于本地 Maven 仓库,其大小根据使用情况而定,但预计最少也需要 500 MB,所以总的要求是 510 MB 左右。

    操作系统 :没有要求,只要能启动 shell 脚本或 Windows 批处理文件即可。

    具体的安装步骤如下:

      在安装前,我们需要先检查 Java 的环境变量,因为 Maven 是使用纯 Java 语言开发的项目,需要 Java 环境支持才能运行,在命令行中输入 ,如果出现以下信息,说明没有问题

    什么是Maven

      如果出现下面这段提示,说明本机的 Java 环境没有配置好或没有安装 JDK,关于如何配置 Java 环境或者如何安装 JDK 可以参考我的这篇文章:

    1. 解压压缩包,将文件夹放入指定的位置

      Maven 的安装没有专门的图形化安装程序,所以在安装的时候,只需要将对应的压缩包解压至你想安装的位置即可。

    什么是Maven

    1. 配置对应的环境变量

      这一步的存在是为了方便其他的软件使用 Maven ,比如IDEA。一共需要在系统环境中配置两个环境变量:

    第一个

    变量名:

    变量值:

    什么是Maven

    第二个

    变量名:

    变量值:

    什么是Maven

    1. 配置本地仓库位置和阿里云镜像

      这是安装的最后一步,本地仓库的位置可以自定义,不过笔者建议是 Maven 装在哪个盘,本地仓库就配置在哪,例如 Maven 装在 D 盘,那么本地仓库的位置可以指定为 :

    阿里云镜像的话,复制下面这段代码即可:

    另外,JDK 的版本也需要在 Maven 的配置文件中进行指定:

    把上面的配置粘贴在 settings.xml 文件中即可:

    什么是Maven

    1. 完整的 xml 配置如下所示:

    三、关于Maven的其他知识

    • Maven的核心概念

    • Maven的常用命令

    • Maven的依赖

     

    3.1、Maven的核心概念

    1. 约定

    2. POM

    3. 坐标

    4. 依赖

    5. 仓库

    6. 生命周期/插件/目标

    7. 继承

    8. 聚合

     

     

    3.2、Maven的常用命令

    执行与构建过程相关的 Maven 命令,必须进入 pom.xml 所在的目录下

    常用命令:

    :清理旧的 class 字节码文件

    :编译主程序

    :编译测试程序

    :执行测试

    :打包

    :安装

    :生成站点

     

    3.3、Maven的依赖

      Maven 在解析 pom 文件的依赖信息时首先会在本地仓库查找被依赖的 jar 包文件,如果查找不到,才会自动连接外网到中央仓库中进行下载,如果此时无法下载,则搭建失败。此外,如果我们开发的 Maven 工程执行过 install 命令,那么也会进入本地仓库。

     

    什么是Maven

     

      依赖的传递性可以使得所有工程中不必都声明一次依赖,在父 pom 文件中声明一次即可。注意,非compile范围的依赖无法传递,所以必须在需要声明的地方重复声明依赖

    如何排除某个依赖项中的其他依赖?

    使用 `exclusions` 和 `exclusion` 标签排除某个依赖中的子依赖,如下所示:

    怎么统一更改依赖的版本?

    引入 标签,在需要同一版本的位置,使用 引用声明的版本号,如下所示:

  • 0
  • 0
  • 0
  • 58
  • 请登录之后再进行评论

    登录
  • 任务
  • 实时动态
  • 发布
  • 单栏布局 侧栏位置: