Maven介绍
自动化构建工具
Maven 试图将模式应用于项目的构建基础结构,以便通过提供使用最佳实践的明确路径来提高理解力和生产力。
Maven本质上是一个项目管理和理解工具(
自动化构建工具
),因此Maven提供了一种帮助管理的方法:
- 建立(Builds)
- 文档(Documentation)
- 报告(Reporting)
- 依赖(Dependencies)
- 单片机(SCMs)
- 释放(Releases)
- 分配(Distribution)
在JavaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁:
Make→Ant→Maven→Gradle→其他……
构建的概念
构建并不是创建,创建一个工程并不等于构建一个项目。要了解构建的含义我们应该由浅入深的从以下三个层面来看:
- 纯Java代码
大家都知道,我们Java是一门编译型语言,.java
扩展名的源文件需要编译成.class
扩展名的字节码文件才能够执行。所以编写任何Java代码想要执行的话就必须经过编译得到对应的.class文件。
- Web工程
当我们需要通过浏览器访问Java程序时就必须将包含Java程序的Web工程编译的结果“拿”到服务器上的指定目录下,并启动服务器才行。这个“拿”的过程我们叫部署。
我们可以将未编译的Web工程比喻为一只生的鸡,编译好的Web工程是一只煮熟的鸡,编译部署的过程就是将鸡炖熟。
Web工程和其编译结果的目录结构对比见下图:
- 实际项目
在实际项目中整合第三方框架,Web工程中除了Java程序和JSP页面、图片等静态资源之外,还包括第三方框架的jar包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构部署到服务器上,项目才可以运行。
综上所述:构建就是以我们编写的Java代码、框架配置文件、国际化等其他资源文件、JSP页面和图片等静态资源作为「原材料」,去**「生产**」出一个可以运行的项目的过程。
构建环节
-
清理:删除以前的编译结果,为重新编译做好准备。
-
编译:将Java源程序编译为字节码文件。
-
测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
-
报告:在每一次测试后以标准的格式记录和展示测试结果。
-
打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。
-
安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
-
部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。
自动化构建方式
其实上述环节我们在IDEA中都可以找到对应的操作,只是不太标准。那么既然IDE已经可以进行构建了我们为什么还要使用Maven这样的构建工具呢?
使用IDE开发工具构建项目,往往很大一部分时间花在了
编译、打包、部署、测试
这些程式化的工作上面,而真正需要由“人”的智慧实现的分析问题和编码却只占了很少一部分。所以,我们就需要将程式化的工作交给机器去帮助我们完成,而我们就完成代码编写和问题修复就可以了。所以,我们采用maven来帮助自动化构建项目。
那么Maven又是如何实现自动化构建的呢?简单的说来就是它可以自动的从构建过程的起点一直执行到终点:
全文结束!