maven生命周期概述
Maven的生命周期是抽象的,maven生命周期本身不做任何实际的工作。生命周期的每个阶段的具体工作都是由绑定的插件的插件目标来完成。生命
生命周期阶段都有默认的插件目标绑定。
三套生命周期
maven有三套相互独立的生命周期,分别为clean、default和site。clean生命周期的目的是清理项目,default生命周期负责项目构建,site生命周期负责建立项目站点。切记三套生命周期是相互独立的。
maven的每套生命周期都包含多个阶段,这些阶段是具有严格执行顺序的。必须顺序执行完之前的每一个阶段才能执行当前阶段。如clean生命周期包含pre-clean、clean和post-clean三个阶段,如果调用命令如“mvn clean”执行clean阶段,则首先执行pre-clean阶段,然后顺序执行其后的clean阶段。
maven的三套生命周期是相互独立,不互相影响的。如上面”mvn clean”执行了clean生命周期的两个阶段,但不会触发任何default和site生命周期的阶段。
下面分别列出三套生命周期的每个阶段:
clean生命周期
clean生命周期负责项目清理,包含三个阶段:
1. pre-clean
2. clean : 清理上一次构建生成的文件,默认是删除主目录下的target文件夹
3. post-clean
default生命周期
- validate
- initialize
- generate-sources
- process-sources:处理项目主资源文件。对src/main/resources下的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
- generate-resources
- process-resources
- compile:编译项目主代码。对src/main/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下的代码编译后,复制到项目输出的测试classpath目录中。
- process-test-classes
- test:使用单元测试框架执行单元测试,测试代码不会被打包或部署。
- prepare-package
- package:打包,包放在target目录下
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install:将包放置到maven本地仓库中,本地其他maven项目就可以使用该包了。
- deploy:将包部署至远程仓库。
site生命周期
- pre-site
- site:生成项目站点文档,默认目录在target/site文件夹下
- post-site
- site-deploy:将生成的项目站点发布至服务器
例子
- mvn clean:执行clean生命周期的1,2阶段。
- mvn clean install:先执行clean生命周期的1,2阶段,然后顺序执行default生命周期的install之前的阶段和install阶段。
- mvn install clean:先顺序执行default生命周期的install之前的阶段和install阶段,然后执行clean生命周期的1,2阶段。(这种命令没有实际意义,因为install生成的文件都在target目录下,而clean则将target目录删除掉了)
- mvn clean install site :
- 执行clean生命周期的1,2阶段;
- 顺序执行default生命周期的install之前的阶段和install阶段;
- 顺序执行site生命周期的1,2阶段。