笔记屋 笔记屋
  • 首页
  • 大数据
    • Hadoop
  • 码农碎笔
  • 杂乱无章
  • 好物收藏

Maven笔记-Maven是什么

自动化构建工具

  1. Maven 这个单词的本意是:专家,内行。读音是[‘meɪv(ə)n]或[‘mevn],不要读作“妈文”。
  2. Maven 是一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。在 JavaEE 开发的历史上构建工具的发展也经历了一系列的演化和变迁:Make→Ant→Maven→Gradle→其他……

构建的概念

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

(1)纯 Java 代码

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

(2)Web 工程

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

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

(3)实际项目

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

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

构建环节

  • (1)清理:删除以前的编译结果,为重新编译做好准备。
  • (2)编译:将 Java 源程序编译为字节码文件。
  • (3)测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
  • (4)报告:在每一次测试后以标准的格式记录和展示测试结果。
  • (5)打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应 jar包Web 工程对应 war 包。
  • (6)安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
  • (7)部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。

自动化构建

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

这是阳光明媚的一天。托马斯向往常一样早早的来到了公司,冲好一杯咖啡,进入了自己的邮箱——很不幸,QA 小组发来了一封邮件,报告了他昨天提交的模块的测试结果——有 BUG。“好吧,反正也不是第一次”,托马斯摇摇头,进入 IDE,运行自己的程序,编译、打包、部署到服务器上,然后按照邮件中的操作路径进行测试。“嗯,没错,这个地方确实有问题”,托马斯说道。于是托马斯开始尝试修复这个 BUG,当他差不多有眉目的时候已经到了午饭时间。

下午继续工作。BUG 很快被修正了,接着托马斯对模块重新进行了编译、打包、部署,测试之后确认没有问题了,回复了 QA 小组的邮件。

一天就这样过去了,明媚的阳光化作了美丽的晚霞,托马斯却觉得生活并不像晚霞那样美好啊。

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

Maven笔记-Maven是什么-笔记屋

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

Maven笔记-Maven是什么-笔记屋

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

Maven笔记-Maven是什么-笔记屋

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

Maven笔记-Maven是什么-笔记屋
有帮助?
Maven笔记-为什么要使用 Maven
Maven笔记-Maven如何使用
Copyright © 2022 笔记屋. 苏ICP备20033168号