自动化构建工具
Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理。Maven 这个单词的本意是:专家,内行。
何为构建(Build)
构建并不是创建,创建一个工程并不等于构建一个项目。
构建过程的几个主要环节 :
- ①清理:删除以前的编译结果,为重新编译做好准备。
- ②编译:将 Java 源程序编译为字节码文件。
- ③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
- ④报告:在每一次测试后以标准的格式记录和展示测试结果。
- ⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应 war 包。
- ⑥安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
- ⑦部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。
Maven 的意义在于,它可以自动的从构建过程的起点一直执行到终点:
Maven的工作过程简介
Maven 的核心程序中仅仅定义了抽象的生命周期,而具体的操作则是由 Maven 的插件来完成的。可是 Maven 的插件并不包含在 Maven 的核心程序中,在首次使用时需要联网下载。
下载得到的插件会被保存到本地仓库中。本地仓库默认的位置是:~\.m2\repository。
约定的目录结构
约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环,就拿自动编译来说,Maven 必须能找到 Java 源文件,下一步才能编译,而编译之后也必须有一个准确的位置保持编译得到的字节码文件。
我们在开发中如果需要让第三方工具或框架知道我们自己创建的资源在哪,那么基本上就是两种方式: ①通过配置的形式明确告诉它 ②基于第三方工具或框架的约定。
Maven 对工程目录结构的要求就属于后面的一种。
现在 JavaEE 开发领域普遍认同一个观点:约定>配置>编码。(好像SpringBoot也是这个思想。。。)意思就是能用配置解决的问题就不编码, 能基于约定的就不进行配置。而 Maven 正是因为指定了特定文件保存的目录才能够对我们的 Java 工程进行 自动化构建。