Maven 第2章 Maven 是什么?

第2章 Maven 是什么

如果上面的描述能够使你认识到使用Maven是多么的重要,我们下面就来介绍一下Maven是什么。

2.1 自动化构建工具

 1)  Maven这个单词的本意是:专家,内行。读音是['meɪv(ə)n]或['mevn],不要读作“妈文”。

  2) Maven是一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。在JavaEE开发的历

史上构建工具的发展也经历了一系列的演化和变迁:

Make→Ant→Maven→Gradle→其他……

2.2 构建概念

  1)   构建并不是创建,创建一个工程并不等于构建一个项目。要了解构建的含义我们应该由浅入深的从以下三个层面来看:

①纯Java代码

大家都知道,我们Java是一门编译型语言,.java扩展名的源文件需要编译成.class扩展名的字节码文件才能够执行。所以编写任何Java代码想要执行的话就必须经过编译得到对应的.class文件。

②Web工程

当我们需要通过浏览器访问Java程序时就必须将包含Java程序的Web工程编译的结果“拿”到服务器上的指定目录下,并启动服务器才行。这个“拿”的过程我们叫部署

我们可以将未编译的Web工程比喻为一只生的鸡,编译好的Web工程是一只煮熟的鸡,编译部署的过程就是将鸡炖熟。

Web工程和其编译结果的目录结构对比见下图:

③实际项目

在实际项目中整合第三方框架,Web工程中除了Java程序和JSP页面、图片等静态资源之外,还包括第三方框架的jar包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构部署到服务器上,项目才可以运行。

所以综上所述:构建就是以我们编写的Java代码、框架配置文件、国际化等其他资源文件、JSP页面和图片等静态资源作为“原材料”,去生产出一个可以运行的项目的过程。

那么项目构建的全过程中都包含哪些环节呢?

2.3 构建环节

 1) 清理:删除以前的编译结果,为重新编译做好准备。

 2) 编译:将Java源程序编译为字节码文件。

  3)测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。

 4) 报告:在每一次测试后以标准的格式记录和展示测试结果。

 5) 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。

 6) 安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。

 7) 部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。

2.4 自动化构建

其实上述环节我们在Eclipse中都可以找到对应的操作,只是不太标准。那么既然IDE已经可以进行构建了我们为什么还要使用Maven这样的构建工具呢?我们来看一个小故事:

让我们来梳理一下托马斯这一天中的工作内容

从中我们发现,托马斯的很大一部分时间花在了“编译、打包、部署、测试”这些程式化的工作上面,而真正需要由“人”的智慧实现的分析问题和编码却只占了很少一部分。

能否将这些程式化的工作交给机器自动完成呢?——当然可以!这就是自动化构建。

那么Maven又是如何实现自动化构建的呢?简单的说来就是它可以自动的从构建过程的起点一直执行到终点:

2.5 Maven核心概念

Maven之所以能够实现自动化的构建,和它的设计是紧密相关的。我们对Maven的学习就围绕它的九个核心概念展开:

  • POM
  • 约定的目录结构
  • 坐标
  • 依赖管理
  • 仓库管理
  • 生命周期
  • 插件和目标
  • 继承
  • 聚合