Maven入门(3) 之 Maven自动化构建项目

  第一篇Maven的介绍中提到说,Maven是一款非常强大的项目管理工具。其实他的最主要的两个功能就是项目管理和构建项目。

  所以Maven也可以这样介绍,Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。

这里再次重点说一下Maven的项目构建。

1、什么是构建

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

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

  • 部署

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

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

    生的鸡——>处理——>熟的鸡
    动态Web工程——>编译、部署——>编译结果

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

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

2、Web 工程和其构建结果的目录结构对比

  见下图:

Web 工程和其构建结果的目录结构对比

说明:

编译:在web项目还没有编译的时候,是没有classes目录里边的内容,在src目录里边的内容编译之后,生成的.class文件都在classes目录里。

数字对应图中的数字
1:web工程的名称,编译之后就是访问路径的根目录。
2:把web项目构建后,编译好的文件放入了构建好项目的WEB-INF目录里。
3:web项目中的WebContent目录结构,就是构建后项目的整体目录。

  当我们访问项目的时候,不是根据web工程的目录结构访问,而是根据构建好之后的工程目录进行访问,和资源的获取。

3、构建过程的几个主要环节

  • 清理:将以前编译得到的旧的class字节码文件删除,为重新编译做好准备。
  • 编译:将 Java 源程序编译为class字节码文件。
  • 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。(让maven自动的去调用测试的程序)
  • 报告:在每一次测试后以标准的格式记录和展示测试结果。(测试程序执行的结果)
  • 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。
  • 安装:在 Maven 环境下特指将打包的结果(jar 包或 war 包)安装(复制)到本地仓库中。
  • 部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。(将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其可以运行)

4、举个例子

  在很早的时候,我们修改一个bug,收到了QA的邮件,我们会打开IDE工具进行编译、打包、部署、测试,把项目运行起来,定位bug,梳理原因,解决bug等一系列调试,期间不停的重复着编译、打包、部署、测试这些流程,浪费了大量的时间和精力。

  如下图:


图1

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

图2

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

图3

  此时 Maven 的意义就体现出来了,它可以自动的从构建过程的起点一直执行到终点:

图4

  想必大家看完这篇文章,对Maven的自动化构建有了更深一些的了解了。

你可能感兴趣的:(Maven入门(3) 之 Maven自动化构建项目)