天天看点

03.maven生命周期

maven生命周期

maven有一个十分完善的生命周期模型(lifecycle)。运行maven的每个步骤都由maven预定义的,相比Ant而言,这种预定义使maven的使用变得简单(Ant的每个步骤都要你手工去定义)。这个模型是一种标准,在不同的项目中,maven的生命周期是相同的。一般情况下,<code>mvn clean package</code> 这样的命令是通用的。

maven有三套相互独立的生命周期:

Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

Site Lifecycle 生成项目报告,站点,发布站点。

说它们是相互独立的,是指你可以只调用clean来清理项目,仅调用site来生成项目报告。你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行<code>mvn clean</code> ,这里的clean是Clean生命周期的一个阶段。运行某个阶段的时候,它之前的所有阶段都会被运行,

Clean生命周期一共包含了三个阶段:

pre-clean 执行一些需要在clean之前完成的工作

clean 移除所有上一次构建生成的文件

post-clean 执行一些需要在clean之后立刻完成的工作

如上面所说,我们平常执行的<code>mvn clean</code>指令时,maven会先运行pre-clean,然后运行clean。如果执行 <code>mvn post-clean</code>,则执行顺序为<code>pre-clean--&gt;clean--&gt;post-clean</code>

pre-site 执行一些需要在生成站点文档之前完成的工作

site 生成项目的站点文档

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy 将生成的站点文档部署到特定的服务器上

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类字节码增强,maven 2.0.5及以后的版本加入此阶段

test

使用合适的单元测试框架运行测试。这些测试不能要求打包或部署。

prepare-package

执行所有打包之前的必须打包准备工作,maven 2.1 及以后版本加入此阶段

package

将编译的代码打包生成可发布的格式,如 JAR 。

pre-integration-test

执行集成测试之前的工作,这涉及一些例如设置需要的环境的工作

integration-test

如果必要,此阶段会把可发布的包部署到集成测试环境

post-integration-test

集成测试兵团操作,例如清理环境

verify

运行所有检查,验证包是否有效,并且符合软件质量标准

install

将包安装至本地仓库,用于其它项目依赖。

deploy

将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

apache maven guides:Introduction to the Build Lifecycle