Maven命令的输入往往就对应了生命周期、比如mvncompile就表示执行默认生命周期阶段compile。Maven的生命周期是抽象的、其实际行为都是由插件完成的。比如mvncompile就可能会由maven-compile-plugin完成。生命周期和插件是协同工作。
1、 何为生命周期
项目构件中进行的清理、编译、测试及部署都可以视作一个一个项目的生命周期、但是每个项目每个人都有不一样的顺序不一样的实现方式。没有统一性带来的不方便已经不言而喻。
Maven的生命周期就是为例对所有的构建过程进行抽象和统一。抽象与项目、应用与项目、总结了一套完善易扩展的生命周期:清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成。Maven的生命周期是抽象的、意味着生命周期不做任何实际工作。实际工作都是由插件完成。
2、 三套生命周期
Maven的有三套生命周期:clean、default、site。每个生民周期包含不同的阶段(phase)、阶段是有序的、执行生命周期的每个阶段时此phase的前面的所有阶段都会被执行。
2.1、 Clean:
pre-clean、
clean、
post-clean。
2.2、 Default:
validate
initialize
generate-sources
process-sources:处理项目主资源、一般是将src/main/resources目录的内容进行变量替换工作后、复制到项目输出的主classpath目录中。
generate-resources
process-resources
compile编译项目的主源码、一般是编译src/main/java目录下的Java文件至项目输出的主classpath目录中。
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
test-compile:编译项目的测试源码、一般是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。
process-test-classes
test:使用单元测试框架运行测试、测试代码不会被打包或部署
prepare-package
package
pre-intergration-test
integration-test
post-intergration-test
verify
install:将包安装到Maven本地仓库。
deploy:将包复制到远程仓库
2.3、 Site生命周期
pre-site
site:生成项目站点文档
post-site
site-deploy:将生成的项目站点发布到服务器上
3、 命令行与生命周期:
$mvnclean 执行pre-clean——》clean
$mvnclean install 执行上面提到的clean、执行default生命周期从开始到install所有生命周期阶段。