Maven 生命周期
除了坐标、依赖以及仓库之外,Maven 另外两个核心概念是生命周期和插件。Maven 的生命周期是抽象的,其实际行为都由插件来完成。两者协同工作,密不可分。
1. Maven 生命周期是什么
在 Maven 出现之前,项目构建的生命周期就已经存在,软件开发人员每天都对在项目进行清理、
编译、测试及部署。虽然都是构建工作,却有着各式各样的构建方式。满足自身的需求即可,
换个项目就需要重头再来。
a) 定义
Maven 的生命周期就是为了所有的构建过程进行抽象和统一。
b) 内容
Maven 从大量项目和构建工具中学习和反思,然后总结了一套高度完善的、易扩展的生命周期。
几乎所有项目的构建,都能映射到这样一个生命周期上。
i. 清理
ii. 初始化
iii. 编译
iv. 测试
v. 打包
vi. 集成测试
vii. 验证
viii. 部署
ix. 站点生成
c) 声明周期是抽象的
Maven 的生命周期是抽象的,生命周期本身不做任何实际的工作,实际的任务都交由插件来完成,
类似设计模式中的模版方法模式。
d) 插件机制
Maven 的每个构建步骤都可以绑定一个或者多个插件行为,
而且 Maven 为大多数构建步骤编写并绑定了默认插件。
e) 标准化、结构化、灵活化
Maven 的生命周期和插件机制,一方面保证了所有 Maven 项目有一致的构建标准,
另一方面通过默认插件简单和稳定了实际项目的构建。
并且也可以自行编写插件来自定义构建行为,最大灵活化。
2. 三套生命周期
Maven 有三套相互独立的生命周期,每个生命周期包含一些阶段,这些阶段也是有顺序的,
并且后面的阶段依赖于前面的阶段。但三套生命周期本身是相互独立的。
可以调用任何一个生命周期的某个阶段,而不对其他生命周期产生任何影响。
a) clean生命周期
clean生命周期的目的是清理项目,包含三个阶段。
i. pre-clean
执行一些清理前需要完成的工作。
ii. clean
清理上一次构建生成的文件。
iii. post-clean
执行一些清理后需要完成的工作。
b) default生命周期
定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分。
包含以下阶段。基本上,根据名称我们就能猜出每个阶段的用途。
(关于其它阶段的解释,请参考
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html)
i. validate
ii. initialize
iii. generate-sources
iv. process-sources
v. generate-resources
vi. process-resources
复制并处理资源文件,至目标目录,准备打包。
vii. compile
编译项目的源代码。
viii. process-classes
ix. generate-test-sources
x. process-test-sources
xi. generate-test-resources
xii. process-test-resources
复制并处理资源文件,至目标测试目录。
xiii. test-compile
编译测试源代码。
xiv. process-test-classes
xv. test
使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
xvi. prepare-package
xvii.package
接受编译好的代码,打包成可发布的格式,如 jar 。
xviii.pre-integration-test
xix. integration-test
xx. post-integration-test
xxi. verify
xxii. install
将包安装至本地仓库,以让其它项目依赖。
xxiii.deploy
将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
c) site生命周期
生成项目报告,站点,发布站点。
i. pre-site
执行一些在生成项目站点之前需要完成的工作。
ii. site
生成项目站点文档。
iii. post-site
执行一些在生成项目站点之后需要完成的工作。
iv. site-deploy
将生成的项目站点发布到服务器上。
d) 总结
i. clean
mvn clean 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,
它之前的所有阶段都会被运行,也就是说,mvn clean 等同于 mvn pre-clean clean ,
如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。
这是Maven很重要的一个规则,可以大大简化命令行的输入。
ii. site
这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,
这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。
iii. 切记
记住,运行任何一个阶段的时候,它前面的所有阶段都会被运行,
这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。
相关推荐
Maven生命周期是一组预定义的阶段,这些阶段定义了构建过程的各个步骤,并且按照一定的顺序执行,从而简化和自动化项目的构建过程。 Maven生命周期主要分为三个独立的生命周期:clean生命周期、default生命周期和...
Maven生命周期 最新版 最全 最好用
Maven非常强大的重要原因是它有十分完善的生命周期模型 lifecycle 这个生命周期可以从两方面来理解 第一 顾名思义 运行Maven的每个步骤都由它来定义的 这种预定义的默认行为使得我们使用Maven变得简单 相比而言 Ant...
Maven生命周期是一系列阶段(phases)的集合,每个阶段包含了一系列的目标(goals)。当执行一个生命周期阶段时,它会执行该阶段内所有目标,按照它们的顺序。Maven生命周期主要有三个主要的部分: - **清理(Clean)...
#### Maven生命周期概述 Maven是一个项目管理和综合工具,它通过一系列预定义的任务和明确的构建生命周期来管理项目的构建、报告和文档。Maven的核心特性之一是其生命周期(Lifecycle),它定义了一系列必须按顺序...
Maven生命周期和插件原理用法详解 Maven生命周期是Maven项目构建的核心机制,它定义了项目从编译到部署的整个过程。Maven生命周期可以分为三大阶段:clean周期、default周期和site周期。 1. Clean周期:负责清理...
对于使用Eclipse的开发人员,M2Eclipse插件提供了与Maven生命周期的集成。用户可以直接在Eclipse中右键点击项目或`pom.xml`文件,选择`Run As > Maven Build`,预设或自定义Maven命令。例如,自定义`mvn clean ...
Maven生命周期定义了项目的构建、测试、打包、部署等阶段,分为clean、default和site三个生命周期。每个生命周期包含了一系列的阶段,每个阶段包含了若干个目标(Goal)。目标是实际执行的任务,由插件实现。 ### ...
Maven库是Java开发中不可或缺的一部分,它是一个存储各种软件组件(主要是JAR...通过创建自定义Maven库,可以更好地管理和分发内部组件,而对Maven生命周期、插件以及仓库配置的深入理解,则有助于优化整个开发过程。
本文将详细介绍maven的配置命令、项目部署、pom.xml文件的结构和元素、maven生命周期和插件等知识点。 maven配置命令 maven提供了一系列的配置命令,用于项目的构建、测试、打包、部署等。以下是一些常用的maven...
- **Maven生命周期**:Maven定义了一组标准的生命周期阶段,如清理(clean)、编译(compile)、测试(test)、打包(package)等。用户可以绑定特定的插件目标到生命周期的各个阶段。 - **Maven坐标**:用于定位...
Maven生命周期包括三个主要阶段:编译(compile)、测试(test)和打包(package)。每个阶段由一系列的阶段(goals)组成,例如`clean`预清理项目,`install`将项目安装到本地仓库。 5. **插件(Plugins)** ...
4. Maven生命周期与构建阶段: Maven有三个主要的生命周期:clean、default和site。clean生命周期用于清理项目,default生命周期负责编译、测试、打包、集成测试、验证和部署,site生命周期则用于生成项目文档。在...
【描述】:本课程主要讲解Maven生命周期、自定义插件开发以及如何基于Nexus构建企业级的私有Maven仓库。 【标签】:“Maven”,“生命周期”,“插件开发”,“Nexus”,“私服” 【部分内容】: 1. Maven生命...
** Maven简介 ** Maven是一个Java项目管理工具,它通过一套标准的构建生命周期和依赖管理...对于初学者,可以从安装、创建项目、理解和使用POM.xml,以及熟悉Maven生命周期和插件等方面入手,逐步掌握Maven的使用。
4. **支持Maven生命周期和构建过程**: 开发者可以在 Eclipse 中直接触发 Maven 生命周期的不同阶段,如编译、测试和打包,这极大地提高了开发效率。 5. **聚合项目的支持**: 对于包含多个子模块的 Maven 多模块...
Maven插件是Maven生命周期的核心部分,通过插件可以完成编译、测试、打包等构建任务。在Web项目中,通常会使用maven-war-plugin插件来打包Web应用,生成WAR文件。 Maven的安装和配置是使用Maven进行项目管理的第一...