Maven构建——重点
构建的概念
构建并不是创建,创建一个工程并不等于构建一个项目。构建就是以我们编写的 Java 代码(Java源文件)、框架配置文件、国际化等其他资源文件、JSP 页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程,要了解构建的含义我们应该由浅入深的从以下三个层面来看:
①纯 Java 代码(编译)
大家都知道,我们 Java 是一门编译型语言,.java 扩展名的源文件需要编译成.class 扩展名的字节码文件才能够执行。所以编写任何 Java 代码想要执行的话就必须经过编译得到对应的.class 文件。
②Web 工程(部署)
当我们需要通过浏览器访问 Java 程序时就必须将包含
Java 程序的 Web 工程编译的结果“拿”到服务器上的指定目录下,并启动服务器才行。这个“拿”的过程我们叫部署。
Web 工程和其编译结果的目录结构对比见下图
工程名==结果根目录
src源码==WEB-INF下的classes字节码文件
③实际项目(搭建)
在实际项目中整合第三方框架,Web 工程中除了 Java 程序和 JSP 页面、图片等静态资源之外,还包括第三方框架的 jar 包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构部署到服务器上,项目才可以运行。
构建过程的几个主要环节
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将 Java 源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。
⑥安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。
Maven 核心概念
下面我们来对比一下,首先建立一个普通的Java工程,是这样的:
这个我们都很熟悉,src下建包写代码,那么配置文件放在哪里?单元测试(Junit)代码放在哪里?没有一个统一标准,更多时候都是开发者的自由发挥,每个人有自己的风格,这并不十分适合团队协作。接下来,看一下使用maven构建一个普通Java项目之后的目录结构:
使用Maven构建的普通Java项目,对源代码、单元测试代码、资源乃至后续需要的文件都有专门的目录规划。
Maven内部原理
Maven 能够实现自动化构建是和它的内部原理分不开的,这里我们从 Maven 的九个核心概念入手,看看 Maven 是如何实现自动化构建的
①POM
②约定的目录结构
③坐标
④依赖管理
⑤仓库管理
⑥生命周期
⑦插件和目标
⑧继承
⑨聚合