前言:
看gradle复习知识点的时候,发现这块以前记录过的丢失了,现在重新补一下,记录复习!
Maven生命周期的理解
生命周期你可以理解为:构建工程的步骤。而Maven生命周期你就可以理解为:构建项目的过程中,清理、初始化、编译、打包、测试、部署等构建步骤。笼统的讲就是:为了对所有的构建过程进行抽象和统一。大多数人会在说maven生命周期的时候,直接说其主要的阶段: clean,compile,test,package,verify,install 和 deploy 这几个阶段,但其实它并不是全部。
在Maven的生命周期中有三套相互独立的生命周期,是不是有点绕口?没错,这三套生命周期是相互独立的!也就是说,你可要仅调用clean来清理工作目录,仅调用site来生成站点。当然你也可以直接运行 mvn clean install site
运行所有这三套生命周期。
这三套生命周期分别是:
- clean - 清理项目
在clean生命周期中存在着clean阶段,每套生命周期都由一组阶段, 例如:命令行输入的命令就对应于一个特定的阶段。mvn clean
中的clean就对应着Clean生命周期中clean阶段。 Clean生命周期一共包含了三个阶段:
- 执行清理前需要完成的工作。(
pre-clean
) - 清理上一次构建过程中生成的文件,如编译后的class文件等。(
clean
) - 执行清理后需要完成的工作。(
post-clean
)
- default - 构建项目
Default生命周期是Maven生命周期中最重要的,绝大部分工作都发生在这个生命周期中。它具有很多阶段,常用的阶段:
- 验证项目结构是否正常,必要的配置文件是否存在(
validate
) - 做构建前初始化操作,如初始化参数,创建必要目录等(
initialize
) - 产生在编译过程中需要的源代码(
generate-sources
) - 处理源代码,比如过滤值(
process-sources
) - 产生主代码中的资源在classpath中的包(
generate-resources
) - 复制并处理资源文件,至目标目录,准备打包(
process-resources
) - 编译项目的源代码(
compile
) - 产生编译过程中生成的文件(
process-classes
) - 产生编译过程中测试相关的代码(
generate-test-sources
) - 处理测试代码(
process-test-sources
) - 产生测试中资源在classpath中的包(
generate-test-resources
) - 复制并处理资源文件,至目标测试目录(
process-test-resources
) - 编译测试源代码(
test-compile
) - 产生编译测试代码过程的文件test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署(
process-test-classes
) - 处理打包前需要初始化的准备工作(
prepare-package
) - 接受编译好的代码,打包成可发布格式,如 JAR(
package
) - 做好集成测试前的准备工作,比如集成环境的参数设置(
pre-integration-test
) - 集成测试(
integration-test
) - 完成集成测试前的准备工作,比如集成环境的参数设置(
post-integration-test
) - 检测测试后的包是否完好(
verify
) - 将包安装至本地仓库,以让其它项目依赖(
install
) - 将最终的包复制到远程的仓库,以让其它开发人员与项目共享(
deploy
)
运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。此外,Maven的插件机制是完全依赖Maven的生命周期的,而gradle就提出了增量构建,具体与其输入、task、输出有关,所以gradle的构建效率也比maven快。
- site - 生成项目站点
Site生命周期:
- 执行一些需要在生成站点文档之前完成的工作(
pre-site
) - 生成项目的站点文档(
pre-site
) - 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备(
post-site
) - 将生成的站点文档部署到特定的服务器上(
site-deploy
)