Maven的设计是基于生命周期的。每一个生命周期有多个阶段组成,每个阶段的执行都依赖上一个阶段,也就是说执行某个阶段之前必须执行完在这个阶段之前的其他阶段。
Maven有3个生命周期模型。并且有些阶段会绑定一些目标(goal)
1. 默认周期
阶段名称 | 阶段描述 | 绑定目标 (goal) |
validate |
|
|
initialize |
|
|
generate-sources |
|
|
process-sources | . |
|
generate-resources |
|
|
process-resources | 复制并处理资源文件到目标目录准备打包 | resources:resources |
compile | 编译项目源代码 | compiler:compile |
process-classes |
|
|
generate-test-sources |
|
|
process-test-sources |
| resources:testResources |
generate-test-resources |
|
|
process-test-resources |
|
|
test-compile | 编译测试源代码到测试目标目录 | compiler:testCompile |
process-test-classes |
|
|
test | 用测试框架运行测试代码,这些测试代码不会被打包或部署 | surefire:test |
prepare-package |
|
|
package | 打包编译好的代码 | ejb:ejb or ejb3:ejb3 or jar:jar or par:par or rar:rar or war:war |
pre-integration-test |
|
|
integration-test |
|
|
post-integration-test |
|
|
verify |
|
|
install | 安装到本地仓库 | install:install |
deploy | 运行在一个集成环境中,并将最终的包复制到远程的仓库 | deploy:deploy |
2. Clean 生命周期
阶段名称 | 阶段描述 | 绑定目标 (goal) |
pre-clean | 执行一些需要在clean之前完成的工作 |
|
clean | 移除所有上一次构建生成的文件 | clean:clean |
post-clean | 执行一些需要在clean之后立刻完成的工作 |
|
3. Site 生命周期
阶段名称 | 阶段描述 | 绑定目标 (goal) |
pre-site | 执行一些需要在生成站点文档之前完成的工作 |
|
site | 生成项目的站点文档 | site:site |
post-site | 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 |
|
site-deploy | 将生成的站点文档部署到特定的服务器上 | site:deploy |
总结:因为Maven每个阶段的执行都依赖上一个阶段,所以就默认生命周期而言执行maven install会依次执行validate至install阶段。
有些阶段会绑定一些目标(goal).所以在执行这个阶段的时候会执行绑定的goal.