Maven生命周期

Maven的生命周期是抽象的,生命周期本身不做任何实际的工作,其实际行为都由插件来完成,生命周期和插件两者协同工作,密不可分。每个生命周期步骤都可以绑定一个或多个插件行为,且Maven为大多数构建步骤编写并绑定了默认插件。

Maven拥有三套相互独立的生命周期,分别为cleandefaultsite。clean的目的是清理项目,default的目的是构建项目,site的目的是建立项目站点。每个生命周期包含一些有序的阶段,且后面的阶段依赖于前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。三套生命周期本身是相互独立的,可单独调用任何一个生命周期的任何一个阶段。

clean生命周期

阶段 描述
pre-clean 执行一些清理前需要完成的工作
clean 清理上一次构建生成的文件
post-clean 执行一些清理后需要完成的工作

default生命周期

阶段 描述
validate 验证项目是否正确,并提供所有必要信息
initialize 初始化构建状态,例如设置属性或创建目录
generate-sources 生成任何包含在编译中的源代码
process-sources 处理项目主资源文件,例如变量替换等
generate-resources 生成包含在包中的资源
process-resources 将资源复制并处理到目标目录,准备打包
compile 编译项目的源代码
process-classes 从编译中对生成的文件进行后续处理,例如对Java类进行字节码增强
generate-test-sources 生成任何包含在编译中的测试源代码
process-test-sources 处理测试源代码,例如过滤某些值
generate-test-resources 创建用于测试的资源
process-test-resources 将资源复制并处理到测试目标目录中
test-compile 将测试源代码编译到测试目标目录中
process-test-classes 对来自测试编译的生成文件进行后续处理,例如对Java类进行字节码增强
test 使用合适的单元测试框架运行测试
prepare-package 在实际包装之前执行准备包装所需的任何操作。例如解包,版本处理
package 获取已编译的代码并将其打包为可分发的格式,例如JAR、WAR
pre-integration-test 执行集成测试之前执行所需操作。例如设置所需环境。
integration-test 如有必要,将程序包处理并部署到可以运行集成测试的环境中
post-integration-test 执行集成测试后执行所需的操作。例如清理环境
verify 运行检查以验证包是否有效并符合质量标准
install 将软件包安装到本地存储库中,以便在本地用作其他项目的依赖项
deploy 将最终包复制到远程存储库以与其他开发人员和项目共享

site生命周期

阶段 描述
pre-site 在实际项目站点生成之前执行所需的过程
site 生成项目的站点文档
post-site 执行完成站点生成所需的进程,并准备站点部署
site-deploy 将生成的站点文档部署到指定的Web服务器

命令行与生命周期

从命令行执行Maven任务最主要方式就是调用Maven生命周期。

mvn clean:调用clean生命周期的per-cleanclean阶段

mvn test:调用default生命周期的validatetest的所有阶段

mvn clean install:调用clean生命周期的per-cleanclean阶段和default生命周期的validateinstall的所有阶段