目录
我们再来了解Maven最后一块内容,Maven 的生命周期。
介绍
Maven 的生命周期是为了对 Maven 项目所有的构建过程进行抽象和统一,就是来描述一次项目构建要经历哪些阶段,包括项目的清理、项目的编译、项目的测试、打包、部署等几乎所有的构建部署。而 Maven 当中的生命周期并不像我们所想象的那样是一条线,实际上,Maven 有三套相互独立的生命周期。
Maven中有3套相互独立的生命周期:
- clean:清理工作。
- default:核心工作,如:编译、测试、打包、安装、部署等。
- site:生成报告、发布站点等。
第一套是 clean,它是负责清理工作的,主要就是来清理上一次项目构建所产生的一些文件,比如编译之后的 class 字节码文件、打包之后的 jar 包文件。
第二套生命周期是 default,它是负责整个项目构建的核心工作的,比如项目的编译、测试、打包、安装、部署等工作。
第三套生命周期是 site,它是用来生成报告、发布站点的,这个比较少会用到。
生命周期的阶段
这三套相互独立的生命周期,每一套生命周期又分为若干个阶段,而这些阶段是生命周期当中最细化的操作。
在这幅图当中就罗列了每一套生命周期当中所有的阶段。乍一看是有很多,但我们使用 Maven 进行项目构建,其实主要关注其中的 5 个阶段就可以了。
那分别是 clean 这套生命周期当中的 clean 阶段、default 这套生命周期当中的 compile、test、package 以及 install 阶段。
- 阶段(phase)是有顺序的,后面的阶段依赖于前面的阶段。在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。
这里需要做一个说明,在同一套生命周期中,阶段是有先后顺序的,先运行前面的阶段,再运行后面的阶段,而后面的阶段是需要依赖于前面的阶段的。
也就是说在一套生命周期中,我们运行后面的阶段进行项目的构建,前面的阶段它也会运行。比如我们运行项目当中的 package 这个阶段,那前面的 compile 这个阶段它也会运行。
好,接下来我们再来详细介绍一下我们所需要关注的这五个阶段他们的职责是什么。
五个阶段的职责
- clean:移除上一次构建生成的文件
- compile:编译项目源代码
- test:使用合适的单元测试框架运行测试(junit)
- package:将编译后的文件打包,如:jar、war等