1.组成部分
框架
一个典型的 Maven 构建生命周期是由如下几个阶段的序列组成的:maven
阶段 | 处理 | 描述 |
---|---|---|
prepare-resources | 资源拷贝 | 本阶段能够自定义须要拷贝的资源 |
compile | 编译 | 本阶段完成源代码编译 |
package | 打包 | 本阶段根据 pom.xml 中描述的打包配置建立 JAR / WAR 包 |
install | 安装 | 本阶段在本地 / 远程仓库中安装工程包 |
当须要在某个特定阶段以前或以后执行目标时,可使用 pre 和 post 来定义这个目标。post
当 Maven 开始构建工程,会按照所定义的阶段序列的顺序执行每一个阶段注册的目标。Maven 有如下三个标准的生命周期:单元测试
clean测试
default(or build)优化
siteui
目标表示一个特定的、对构建和管理工程有帮助的任务。它可能绑定了 0 个或多个构建阶段。没有绑定任何构建阶段的目标能够在构建生命周期以外被直接调用执行。spa
执行的顺序依赖于目标和构建阶段被调用的顺序。例如:插件
mvn clean dependency:copy-dependencies package
clean 和 package 参数是构建阶段,而 dependency:copy-dependencies 是一个目标。 clean 阶段将会被首先执行,而后 dependency:copy-dependencies 目标会被执行,最终 package 阶段被执行。code
2.clean生命周期
当咱们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含如下阶段。
pre-clean
clean
post-clean
Maven 的 clean 目标(clean:clean)绑定到了 clean 生命周期的 clean 阶段。它的 clean:clean 目标经过删除构建目录删除了构建输出。因此当 mvn clean 命令执行时,Maven 删除了构建目录。
咱们能够经过在上面的 clean 生命周期的任何阶段定义目标来修改这部分的操做行为。
3.default(or build)生命周期
这是 Maven 的主要生命周期,被用于构建应用。包括下面的 23 个阶段。
生命周期阶段 | 描述 |
---|---|
validate | 检查工程配置是否正确,完成构建过程的全部必要信息是否可以获取到。 |
initialize | 初始化构建状态,例如设置属性。 |
generate-sources | 生成编译阶段须要包含的任何源码文件。 |
process-sources | 处理源代码,例如,过滤任何值(filter any value)。 |
generate-resources | 生成工程包中须要包含的资源文件。 |
process-resources | 拷贝和处理资源文件到目的目录中,为打包阶段作准备。 |
compile | 编译工程源码。 |
process-classes | 处理编译生成的文件,例如 Java Class 字节码的增强和优化。 |
generate-test-sources | 生成编译阶段须要包含的任何测试源代码。 |
process-test-sources | 处理测试源代码,例如,过滤任何值(filter any values)。 |
test-compile | 编译测试源代码到测试目的目录。 |
process-test-classes | 处理测试代码文件编译后生成的文件。 |
test | 使用适当的单元测试框架(例如JUnit)运行测试。 |
prepare-package | 在真正打包以前,为准备打包执行任何须要的操做。 |
package | 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文件。 |
pre-integration-test | 在集成测试执行以前,执行所需的操做。例如,设置所需的环境变量。 |
integration-test | 处理和部署必须的工程包到集成测试可以运行的环境中。 |
post-integration-test | 在集成测试被执行后执行必要的操做。例如,清理环境。 |
verify | 运行检查操做来验证工程包是有效的,并知足质量要求。 |
install | 安装工程包到本地仓库中,该仓库能够做为本地其余工程的依赖。 |
deploy | 拷贝最终的工程包到远程仓库中,以共享给其余开发人员和工程。 |
当一个阶段经过 Maven 命令调用时,例如 mvn compile,只有该阶段以前以及包括该阶段在内的全部阶段会被执行。
不一样的 maven 目标将根据打包的类型(JAR / WAR / EAR),被绑定到不一样的 Maven 生命周期阶段。
4.Site生命周期
Maven Site 插件通常用来建立新的报告文档、部署站点等。
阶段:
pre-site
site
post-site
site-deploy