生命周期
在maven出现之前,项目构建的生命周期就已经存在了。你可以把他想象成项目构建的一套顺序流程;比如有些是手动进行构建,有些是编写自动化脚本,大家也是各写各的,能满足自身的项目即可,换个项目就需要重头再来
maven将这套生命周期抽象化,总结了一套高度完善,易扩展的生命周期
可以把他想象成设计模式——模版方法模式,maven只定义了生命周期的算法,本身的工作交由插件来完成,子类可以通过重写其中的方法来控制实际的行为,这样即满足了扩展性,又能够严格控制生命周期的整体结构
三套生命周期
maven有三套相互独立的生命周期:
- clean生命周期
pre-clean 执行清理前需要完成的工作
clean
post-clean 执行清理后需要完成的工作 - default生命周期
validate
initialize
generate-source
process-source 处理项目主资源文件
generate-resource
process-resource
compile 编译项目的主源码
process-classes
generate-test-source
process-test-source
generate-test-resource
process-test-resource
test-compile 编译项目的测试代码
process-test-classes
test 使用单元测试框架运行测试
prepare-package
package 接受编译好的代码,打包成可发布的格式
pre-integration-test
integration-test
post-integration-test
verify
install 安装到本地仓库
deploy 将最终的包复制到远程的仓库 - sit生命周期
pre-site 执行一些在生成项目站点之前需要完成的工作
site 生成项目的站点文档
post-site 执行一些在生成项目站点之后需要完成的工作
site-deploy 将生成的项目站点发布到服务器上
命令行和生命周期
- $mvn clean 实际执行了clean生命周期的pre-clean和clean阶段
- $mvn test 实际执行了default生命周期的validate,initialize等,直到test
- $mvn clean package 可以联合执行两种类型的生命周期
命令行和生命周期不是所有阶段都绑定的,比如$mvn clean不会执行post-clean阶段
内置绑定
maven的生命周期与插件相互绑定,用以完成实际的构建任务,具体而言就是生命周期的阶段与插件的目标相互绑定:
- clean maven-clean-plugin:clean
- site maven-site-plugin:site
- compile maven-compile-plugin:compile
….