资讯专栏INFORMATION COLUMN

Maven 生命周期

CoreDump / 2146人阅读

摘要:生命周期生命周期是为了对所有的构建过程进行抽象和统一,开发了一套高度完善的易扩展的生命周期。生命周期本身不做任何实际的工作,实际的任务都交给插件来完成。生命周期步骤在中,有三套相互独立的生命周期,分别是和。

Maven 生命周期

Maven 生命周期是为了对所有的构建过程进行抽象和统一,开发了一套高度完善的、易扩展的生命周期。这个生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构建步骤。

Maven 生命周期本身不做任何实际的工作,实际的任务都交给插件来完成。这样的设计,既保证了 Maven 整体框架的轻便,也最大程度的扩展性。

Maven 生命周期抽象了构建的各个步骤,明确了它们的逻辑次序,但没有提供具体的实现,通过插件来完成实际的工作,每个构建步骤都可以绑定一个或者多个插件行为。为了让 Maven 开箱即用,Maven 为大多数构建步骤编写并绑定了默认插件。比如针对编译的插件有 maven-compiler-plugin,针对测试的插件有 maven-surefire-plugin 等。

生命周期步骤

在 Maven 中,有三套相互独立的生命周期,分别是 cleandefaultsite

clean:clean 生命周期的目的是清理项目;

default:default 生命周期的目的是构建项目;

site:site 生命周期的目的是建立项目站点;

每个生命周期包含一些阶段(phase),这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段。clean 生命周期为例,它包含的阶段有 pre-cleanclean post-clean

当我们调用 pre-clean 的时候,只有 pre-clean 阶段执行;

当我们调用clean 的时候,pre-clean clean 阶段会按顺序执行;

当我们调用 post-clean 的时候,pre-cleanclean post-clean 都会按顺序执行;

和生命周期阶段的前后依赖关系相比,cleandefaultsite 这三套生命周期本身是相互独立的,我们可以仅仅调用 clean 生命周期的某个阶段,或者仅仅调用 default 生命周期的某个阶段,而不会对其它生命周期产生任何影响。

clean 生命周期
阶段 执行清理前需要完成的工作
pre-clean 执行清理前需要完成的工作
clean 清理构建生成的文件
post-clean 执行清理后需要完成的工作
default 生命周期
阶段 执行清理前需要完成的工作
validate -
initialize -
generate-sources -
process-sources -
generate-resources -
process-resources 处理项目主资源("src/main/resources")文件,如进行变量替换等工作
compile 编译项目的源码
process-classes -
generate-test-sources -
process-test-sources 处理项目测试资源("src/test/resources")文件
generate-test-resources -
process-test-resources -
test-compile 编译项目测试代码
process-test-classes -
test 使用单元测试框架运行测试,测试代码不会被打包或部署
prepare-package -
package 打包编译好的代码
pre-integration-test -
integration-test -
post-integration-test -
verify 包校验操作
install 安装包到Maven本地仓库
deploy 将包部署到远程仓库
site 生命周期
阶段 执行清理前需要完成的工作
pre-site 在生成项目站点前执行一些工作
site 生成项目站点文档
post-site 在生成项目站点后执行一些工作
site-deploy 将生成项目站点发布到服务器上
常用命令详解

我们通过 Maven 命令行来编译、测试和打包程序的命令,而这些命令其实就是完成了生命周期的操作。

mvn clean:调用插件完成 clean 生命周期的 clean 阶段的操作,实际调用的是 pre-cleanclean 两个阶段;

mvn test:调用 default 生命周期对应的阶段的插件,完成从 validatetest 阶段的所有操作;

mvn clean install:调用 clean 周期的 clean 阶段和 defaultinstall 阶段,实际调用的是 pre-cleanclean 以及 validateinstall 阶段;

mvn clean deploy site-deploy:调用完整的三个生命周期所有阶段(post-clean 不被调用);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76273.html

相关文章

  • Maven 实战

    摘要:的主要思想是约定优于配置。强烈建议遵循以上规范,避免不必要的麻烦。依赖传递依赖范围除了控制,还会对依赖传递产生影响。此外还提供了和来进一步管理依赖,分别称为可选依赖和排除依赖。 showImg(https://segmentfault.com/img/remote/1460000012363876?w=1240&h=698); Maven 是跨平台的项目管理工具,主要服务于基于Java...

    twohappy 评论0 收藏0
  • 使用 Maven 构建 Java 项目

    摘要:基本配置环境变量环境变量中添加为主目录在中添加使用阿里云中央仓库修改根目录下文件夹中的文件,内容如下创建基于的项目使用命令行创建使用原型插件创建工程。 「博客搬家」 原地址: 简书 原发表时间: 2017-03-23 Maven 是基于项目对象模型「POM」,可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。本文总结了 Maven 的基本用法。 1. Maven...

    printempw 评论0 收藏0
  • Maven学习笔记

    摘要:学习笔记先生,您在写代码吗不,我们正在完成一项伟大的工程。于是打算重新学习一下。中央仓库镜像为了分担中央仓库的流量,提升用户的访问速度。生成项目报告,站点,发布站点。修改源码后也需要逐个手动进行操作。 maven学习笔记 先生,您在写代码吗? 不,我们正在完成一项伟大的工程。 前言 在刚学maven时,我就把maven当作一个引入jar包的工具而已,以前是自己下载jar包,现在是只用...

    tomlingtm 评论0 收藏0
  • Maven实战笔记

    摘要:但是,这种行为是危险的,所以最佳实践应该是显示声明任何项目中直接用到的依赖。生命周期和插件的生命周期生命周期清理项目。生命周期建立和发布站点,分享项目信息。 坐标和依赖 依赖冲突的调节 当包的依赖产生冲突,如A->B->X(1.0)和A->D-X(2.0),应该引入X的哪一个版本?消解冲突的法则如下: 路径最近者优先。 如路径长度一样,第一声明者优先。 排除不想要的依赖 在引入第三...

    cyixlq 评论0 收藏0
  • Apache Maven 的介绍和安装

    摘要:的好处节省空间项目的体积相比传统项目小很多,因为将包和项目分开了,通过依赖管理来管理包。一键构建项目可以完成的工作编译测试运行打包部署。 Maven 简介 什么是 Maven Apache Maven,是一个软件项目管理及自动构建工具,由Apache软件基金会所提供,一个开源项目,由 Java 开发,并且只是用来管理 Java 项目的。 Maven 的好处 节省空间: Maven ...

    wuyumin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<