maven生命周期
- maven有三套生命周期clean,default和site,每套生命周期都可以独立运行
- 每个生命周期都会包含多个phase(阶段)
- 每个phase又是由各种插件的goal来完成的,一个插件的goal可以认为是一个功能。
各生命周期phase说明
- default包含的生命周期phase如下 | phase(阶段) | 作用 | | :—-: | :—-: | | validate | 校验这个项目的一些配置信息是否正确 | | initialize | 初始化构建状态,比如设置一些属性,或者创建一些目录 | | generate-sources | 自动生成一些源代码,然后包含在项目代码中一起编译 | | process-sources | 处理源代码,比如做一些占位符的替换 | | generate-resources | 生成资源文件,主要是去处理各种xml、properties那种配置文件,去做一些配置文件里面占位符的替换 | | process-resources | 将资源文件拷贝到目标目录中,方便后面打包 | | compile | 编译项目的源代码 | | process-classes | 处理编译后的代码文件,比如对java class进行字节码增强 | | generate-test-sources | 自动化生成测试代码 | | process-test-sources | 处理测试代码,比如过滤一些占位符 | | generate-test-resources | 生成测试用的资源文件 | | process-test-resources | 拷贝测试用的资源文件到目标目录中 | | test-compile | 编译测试代码 | | process-test-classes | 对编译后的测试代码进行处理,比如进行字节码增强 | | test | 使用单元测试框架运行测试 | | prepare-package | 在打包之前进行准备工作,比如处理package的版本号 | | package | 将代码进行打包,比如jar包 | | pre-integration-test | 在集成测试之前进行准备工作,比如建立好需要的环境 | | integration-test | 将package部署到一个环境中以运行集成测试 | | post-integration-test | 在集成测试之后执行一些操作,比如清理测试环境 | | verify | 对package进行一些检查来确保质量过关 | | install | 将package安装到本地仓库中,这样开发人员自己在本地就可以使用了 | | deploy | 将package上传到远程仓库中,这样公司内其他开发人员也可以使用了 |
- clean生命周期包含的phase如下 | phase(阶段) | 作用 | | :—-: | :—-: | | pre-clean | 执行一些需要在clean之前完成的工作 | | clean | 移除所有上一次构建生成的文件 | | post-clean | 执行一些需要在clean之后立刻完成的工作 |
- site生命周期的phase如下 | phase(阶段) | 作用 | | :—-: | :—-: | | pre-site | 执行一些需要在生成站点文档之前完成的工作 | | site | 生成项目的站点文档 | | post-site | 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 | | site-deploy | 将生成的站点文档部署到特定的服务器上 |
默认的phase和plugin绑定关系
- default生命周期phase与plugin绑定关系如下 | phase(阶段) | plugin:goal | | :—-: | :—-: | | process-resources | resources:resources | | compile | compiler:compile | | process-test-resources | resources:testResources | | test-compile | compiler:testCompile | | test | surefire:test | | package | jar:jar或者war:war | | install | install:install | | deploy | deploy:deploy |
- site生命周期phase与plugin绑定关系如下 | phase(阶段) | plugin:goal | | :—-: | :—-: | | site | site:site | | site-deploy | site:deploy |
- clean生命周期phase与plugin绑定关系如下 | phase(阶段) | plugin:goal | | :—-: | :—-: | | clean | clean:clean |
执行说明
如果我们运行mvn package,Maven就会执行default生命周期,它会从开始一直运行到package这个phase为止,如果phase中绑定了plugin那么就执行对应的gola,如果没有指定则什么都不干
validate
.......
package
如果指定多个phase,如mvn clean package,Maven先执行clean生命周期并运行到clean这个phase,然后执行default生命周期并运行到package这个phase,实际执行的phase如下 ```shell
clean生命周期
pre-clean clean (注意这个clean是phase)
defau
validate … package
3. 大多数情况,我们只要指定phase,就默认执行这些phase默认绑定的goal,只有少数情况,我们可以直接指定运行一个goal
```shell
mvn dependency:tree