1.三套生命周期
Maven拥有三套独立的生命周期,它们分别是clean、default和site。
clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。
每个生命周期包含一些阶段(phase),这些阶段是有顺序的,并且后面的阶段依赖前面的阶段,用户和Maven交互的最直接方式就是调用这些生命周期的阶段。以clean生命周期为例,它的阶段包含pre-clean,clean和post-clean,当用户调用pre-clean的时候,只有pre-clean阶段执行了;当用户调用了clean阶段时,pre-clean和clean都得以执行。
三套生命周期互相独立,调用clean生命周期不会影响或执行default和site生命周期的任何阶段。
2.clean生命周期
clean生命周期的目的是清理项目,它包含三个阶段:
- pre-clean:执行一些清理前需要完成的工作。
- clean:清理上一次构建生成的文件。
- post-clean:执行一些清理后需要完成的工作。
3.default生命周期
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:处理项目测试资源文件,一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath中。
- generate-test-resources:
- process-test-resources:
- test-compile:编译项目测试代码,一般来说,是对src/test/java目录下的java文件复制到项目输出的测试classpath目录中。
- process-test-classes:
- test:使用单元测试框架运行测试,测试代码不会被打包部署。
- prepare-package:
- package:接受编译好的代码,打包成可发布格式,如jar。
- pre-integration-test:
- integration-test:
- post-integration-test:
- verify:
- install:将输出构件安装到Maven的本地仓库,供其他项目使用。
- deploy:将最终的输出构件复制到远程仓库,供其他人和项目使用。
4.site生命周期
site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队的交流和发布项目信息。该生命周期包含如下阶段
- pre-site:执行一些生成项目站点文档之前需要完成的工作。
- site:生成项目站点文档。
- post-site:执行一些生成项目站点文档之后需要完成的工作。
- site-deploy:将生成的项目站点发布到服务器上。