Maven生命周期和阶段详解
程序员文章站
2022-04-23 16:55:02
...
maven 生命周期
maven 有三个内置的build生命周期:default, clean 、site
- clean阶段:处理项目的清理工作
- default阶段:处理项目的deploy
- site阶段:处理网站站点的创建
一个build的生命周期是由一些列的阶段(phases) 组成
每一个生命周期(default\clean\site),由一系列阶段组成,每一个阶段phases代表了生命周期的一个步骤
接下来讲内置三大生命周期及其阶段关系:
clean生命周期由一下几个阶段组成:
- pre-clean : 在项目实际进行clean之前做的一些预处理工作
- clean: 移除所有上一次build过程生成的所有文件
- post-clean :完成最终项目clean工作的收尾工作
default生命周期由以下几个阶段组成:
- validate :验证这个项目是否正确,所有必需资源是否可用
- initialize :初始化编译的状态,例如:设置一些properties属性,或者创建一些目录
- generate-sources :生成所有在编译阶段需要的源代码
- process-sources :处理源代码,例如:替换值(filter any values)
- generate-resources :生成这个项目包所有需要包含的资源文件
- process-resources :复制并处理资源文件到目标目录,为packaging 打包阶段做好准备
- compile : 编译项目的源代码
- process-classes :后置处理编译阶段生成的文件,例如:做java字节码的加强操作
- generate-test-sources : 生成编译阶段需要的test源代码
- process-test-sources :处理test源代码,例如:替换值(filter any values)
- generate-test-resources :生成test测试需要的资源文件
- process-test-resources :复制并处理资源文件到test测试目标目录
- test-compile : 编译项目的测试代码到指定test目标目录
- process-test-classes : 后置处理test编译阶段生成的文件,例如:做java字节码的加强操作
- test : 使用合适的单元测试框架,运行所有测试例子,这些测试用例不应该要求这些代码被打包或者部署才能执行
- prepare-package : 处理任何需要在正式打包之前要完成的必须的准备工作。这一步的通常结果是解压,处理包版本等
- package :打包编译后的代码成可发包格式,例如:jar,war等
- pre-integration-test :完成一些在集成测试之前需要做的预处理操作,这通常包括建立需要的环境。
- integration-test :处理并部署(deploy)包到集成测试可以运行的环境中
- post-integration-test :处理一些集成测试之后的事情,通常包括一些环境的清理工作
- verify :做一些对包的验证操作,去检测这个包是一个合法的符合标准的包。
- install :将包安装到本地仓库,提供给作为其他项目使用,例如:包的本地依赖
- deploy :最终的结果是部署到集成环境或者正式环境,复制这个最终版本到远程仓库并分享给其他项目或者开发者使用
site生命周期由以下几个阶段组成:
- pre-site : 执行一些实际站点生成之前的预处理操作
- site :生成项目的站点文档
- post-site :执行一些后置操并完成最终生成站点操作,并为最后站点发布做好准备
- site-deploy :部署这个生成好的站点文档到指定的web服务器
goal 和liftcycle phase关系
内置的生命周期绑定:
一些阶段有一些目标(goal)默认和他们是绑定在一起的。并且,对于默认的生命周期,这个绑定依赖pom 文件里面的packaging 的值。
常见的目标绑定编译阶段(goal-to-build-phase bindings)
clean生命周期和目标的绑定关系:
- phase goal
- clean clean:clean
default生命周期和目标绑定关系:
当packaging值是jar / rar / war
- phase goal
- process-resources resources:resources
- compile compiler:compile
- process-test-resources resources:testResources
- test-compile compiler:testCompile
- test surefire:test
- package jar:jar or rar:rar or war:war
- install install:install
- deploy deploy:deploy
当packaging值是maven-plugin
- phase goal
- generate-resources plugin:descriptor
- process-resources resources:resources
- compile compiler:compile
- process-test-resources resources:testResources
- test-compile compiler:testCompile
- test surefire:test
- package jar:jar and plugin:addPluginArtifactMetadata
- install install:install
- deploy deploy:deploy
当packaging值是pom
- phase goal
- package site:attach-descriptor
- install install:install
- deploy deploy:deploy
site生命周期和目标绑定关系:
- phase goal
- package site:attach-descriptor
- install install:install
- deploy deploy:deploy
参考资料:
lifecycle官方定义:http://maven.apache.org/ref/3.5.0/maven-core/lifecycles.html
build:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
http://www.iteye.com/news/32493
推荐阅读
-
Vue组件和Route的生命周期实例详解
-
详解SpringBoot获得Maven-pom中版本号和编译时间戳
-
详解kubernetes pod的编排和生命周期
-
Vue实例中生命周期created和mounted的区别详解
-
Android Activity生命周期和堆栈管理的详解
-
Vue生命周期和钩子函数的详解与经典面试题
-
工作中的那些不得意---Maven生命周期以及插件详解
-
过滤器的工作原理和生命周期详解
-
React componentWillMount、componentDidMount、componentWillUpdate和componentDidUpdate生命周期函数的详解
-
详解SpringIOC容器中bean的作用范围和生命周期