Maven生命周期

最近在阅读《Maven实战》这本书,了解Maven生命周期,与大家分享。

Maven的生命周期拥有三套相互独立的生命周期,他们分别为clean、default和site。三个独立的生命周期分别存在不同的目的,如下:

clean :目的是清理项目
default :目的是构建项目
clean :目的是建立项目站点

Maven的每个生命周期包含一些阶段(phase),每个生命周期中的阶段都是存在顺序的(我对clean生命周期中的阶段进行详细说明),并且后面的阶段一定依赖于前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。

clean 生命周期

clean生命周期的目的是情理项目,它包含三个阶段:

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

以clean生命周期为例,存在三个阶段pre-clean、clean和post-clean,讲述关于此三个阶段顺序性。

  1. 当用户执行pre-clean的时候,有且只有pre-clean阶段得以执行;
  2. 当用户执行clean的时候,pre-clean和clean阶段会以顺序执行;
  3. 当用户执行post-clean的时候,pre-clean、clean和post-clean会以顺序执行,

如下图展示,clean生命周期中不会存在pre-clean直接跳过clean,去执行post-clean;
这里写图片描述

default生命周期

default生命周期定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分,其包含的阶段如下:

validate:验证项目是正确的,所有必要的信息可用。
initialize:初始化构建状态,例如设置属性或创建目录。
generate-sources:生成包含在编译中的任何源代码。
process-sources:处理项目主资源文件。一般来说,src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
generate-resources:生成包含在包中的资源。
process-resources:将资源复制并处理到目标目录中,准备打包。
compile: 编译项目的源代码。一般来说,编译src/main/java目录下java文件至项目输出的主classpath目录中。
process-classes:从编译后处理生成的文件,例如对Java类进行字节码增强。
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:从测试编译中处理生成的文件,例如对Java类进行字节码增强。对于Maven 2.0.5及以上版本。
test:使用单元测试框架运行测试,测试代码不会被打包或部署。
prepare-package:在实际包装之前,执行必要的准备包装的操作。这通常会导致打包的处理版本的包。(Maven 2.1及以上)
package:接受编译好的代码,打包成可发布的格式,例如:JAR。
pre-integration-test:在执行集成测试之前执行所需的操作。这可能涉及诸如设置所需环境等。
integration-test:如果需要,可以将该包过程并部署到可以运行集成测试的环境中。
post-integration-test:执行集成测试后执行所需的操作。这可能包括清理环境。
verify:运行任何检查以验证包装是否有效并符合质量标准。
install:将包安装到本地Maven仓库,供本地其他Maven项目使用
deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。

site生命周期

site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。它包含如下几个阶段:

pre-site:执行一些在生成项目站点之前需要完成的工作。
site:生成项目站点文档。
post-site:执行一些在生成项目站点之后需要完成的工作。
site-deploy:将生成的项目站点发布到服务器上。

Maven常用命令和生命周期的关系

Maven各个生命周期是相互独立的,而一个生命周期的阶段是有前后依赖关系的。下面列出一些常见的Maven命令,帮助理解生命周期阶段:

Maven命令Maven生命周期执行的阶段
mvn clean调用clean生命周期clean阶段(实际执行阶段为pre-clean和clean阶段)
mvn test调用default生命周期的test阶段(实际执行阶段为validate,initialize…test)。这也解释为什么在执行测试的时候,项目的代码能够自动得以编译
mvn install调用default生命周期validate至install的所有阶段
mvn clean install调用clean生命周期pre-clean和clean,及default生命周期从validate至install的所有阶段。该命令结合了两个生命周期,构建项目之前先进行清理项目。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值