Note/扩展知识/Maven 生命周期.md

73 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Maven 生命周期
| 阶段 | 处理 | 描述 |
| :------: | :------: | :------------------------------------------------------: |
| clean | 清除 | 清理项目 |
| validate | 验证项目 | 验证项目是否正确且所有必须信息是可用的 |
| compile | 执行编译 | 源代码编译在此阶段完成 |
| Test | 测试 | 使用适当的单元测试框架例如JUnit运行测试。 |
| package | 打包 | 创建JAR/WAR包如在 pom.xml 中定义提及的包 |
| verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
| install | 安装 | 安装打包的项目到本地仓库,以供其他项目使用 |
| site | 建立 | 生成项目站点文档 |
| deploy | 部署 | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
# 详解
- maven包含三套**`相互独立`**的生命周期。
- `clean`生命周期:用于清理项目。
- `default`生命周期:用于构建项目。
- `site`生命周期:用于建立项目站点。
## Clean 生命周期
clean生命周期的目的是清理项目它包含3个阶段
| clean生命周期阶段 | 说明 |
| ----------------- | ----------------------------- |
| pre-clean | 执行一些clean前需要完成的工作 |
| `clean` | 清理上一次构建生成的文件 |
| post-clean | 执行一些clean后需要完成的工作 |
## default生命周期
default生命周期的目的是构建项目它定义了真正构建时所需要完成的所有步骤是所有生命周期中最核心的部分。
包含23个阶段[详细介绍](https://link.segmentfault.com/?enc=adC1EeCKc3GrSxn7%2BTgI1A%3D%3D.Ju%2FVbyKNoLIC%2B5PcetbZtDSB6B0AyYmo3u4p50LueCAc32gWxjgPlEDdIRH8IGAw8rkW%2F9ghBqAd5LxK8%2FbGYfDBBQQ9Jx9lABkYckE7ThE%3D)
| default生命周期阶段 | 说明 |
| ----------------------- | ---------------------------------------------------------- |
| validate | 验证项目是否正确并且所有必要信息都可用 |
| initialize | 初始化构建状态,比如设置属性值、创建目录 |
| generate-sources | 生成包含在编译阶段中的任何源代码 |
| process-sources | 处理源代码,比如说,过滤任意值 |
| generate-resources | 生成将会包含在项目包中的资源文件 |
| 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` | 将编译后的代码打包成可分发的格式比如JAR |
| pre-integration-test | 在执行集成测试前进行必要的动作。比如说,搭建需要的环境 |
| integration-test | 如有必要,将程序包处理并部署到可以运行集成测试的环境中 |
| post-integration-test | 执行集成测试完成后进行必要的动作。比如说,清理集成测试环境 |
| verify | 运行任何检查以验证包是否有效并符合质量标准 |
| `install` | 安装项目包到maven本地仓库供本地其他maven项目使用 |
| `deploy` | 将最终包复制到远程仓库供其他开发人员和maven项目使用 |
## site生命周期
site生命周期的目的是建立和发布项目站点。Maven能够基于pom.xml所包含的信息自动生成一个友好的站点方便团队交流和发布项目信息。
包含以下4个阶段
| site生命周期阶段 | 说明 |
| ---------------- | ---------------------------------------- |
| pre-site | 执行一些在生成项目站点之前需要完成的工作 |
| site | 生成项目站点文档 |
| post-site | 执行一些在生成项目站点之后需要完成的工作 |
| site-deploy | 将生成的项目站点发布到服务器上 |