Maven生命周期详解

原创 2015年10月29日 13:29:34

maven生命周期概述

Maven的生命周期是抽象的,maven生命周期本身不做任何实际的工作。生命周期的每个阶段的具体工作都是由绑定的插件的插件目标来完成。生命
生命周期阶段都有默认的插件目标绑定。

三套生命周期

maven有三套相互独立的生命周期,分别为clean、default和site。clean生命周期的目的是清理项目,default生命周期负责项目构建,site生命周期负责建立项目站点。切记三套生命周期是相互独立的。
maven的每套生命周期都包含多个阶段,这些阶段是具有严格执行顺序的。必须顺序执行完之前的每一个阶段才能执行当前阶段。如clean生命周期包含pre-clean、clean和post-clean三个阶段,如果调用命令如“mvn clean”执行clean阶段,则首先执行pre-clean阶段,然后顺序执行其后的clean阶段。
maven的三套生命周期是相互独立,不互相影响的。如上面”mvn clean”执行了clean生命周期的两个阶段,但不会触发任何default和site生命周期的阶段。
下面分别列出三套生命周期的每个阶段:

clean生命周期

clean生命周期负责项目清理,包含三个阶段:
1. pre-clean
2. clean : 清理上一次构建生成的文件,默认是删除主目录下的target文件夹
3. post-clean

default生命周期

  1. validate
  2. initialize
  3. generate-sources
  4. process-sources:处理项目主资源文件。对src/main/resources下的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
  5. generate-resources
  6. process-resources
  7. compile:编译项目主代码。对src/main/java下的代码编译后,复制到项目输出的主classpath目录中。
  8. process-classes
  9. generate-test-sources
  10. process-test-sources:处理测试资源文件。对src/test/resources下的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。
  11. generate-test-resources
  12. process-test-resources
  13. test-compile:编译项目测试代码。对src/test/java下的代码编译后,复制到项目输出的测试classpath目录中。
  14. process-test-classes
  15. test:使用单元测试框架执行单元测试,测试代码不会被打包或部署。
  16. prepare-package
  17. package:打包,包放在target目录下
  18. pre-integration-test
  19. integration-test
  20. post-integration-test
  21. verify
  22. install:将包放置到maven本地仓库中,本地其他maven项目就可以使用该包了。
  23. deploy:将包部署至远程仓库。

site生命周期

  1. pre-site
  2. site:生成项目站点文档,默认目录在target/site文件夹下
  3. post-site
  4. site-deploy:将生成的项目站点发布至服务器

例子

  • mvn clean:执行clean生命周期的1,2阶段。
  • mvn clean install:先执行clean生命周期的1,2阶段,然后顺序执行default生命周期的install之前的阶段和install阶段。
  • mvn install clean:先顺序执行default生命周期的install之前的阶段和install阶段,然后执行clean生命周期的1,2阶段。(这种命令没有实际意义,因为install生成的文件都在target目录下,而clean则将target目录删除掉了
  • mvn clean install site :
    1. 执行clean生命周期的1,2阶段;
    2. 顺序执行default生命周期的install之前的阶段和install阶段;
    3. 顺序执行site生命周期的1,2阶段。
版权声明:本文为博主原创文章,欢迎转载,转载时请注明出处。

《Maven进阶》1.maven 项目生命周期与构建原理

maven是一个非常经典的和通用的项目管理工具,虽然现在热炒gradle将作为下一代 项目管理工具来取代maven,但是 由于maven强大和健全的功能,maven还有很强的生命力。 本文将介绍m...
  • u010349169
  • u010349169
  • 2016年01月15日 14:19
  • 5102

Maven的生命周期

Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解: 第一,顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使...
  • zsq0511
  • zsq0511
  • 2013年02月25日 13:49
  • 2550

深入理解maven及应用(一):生命周期和插件

在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的b...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2014年07月02日 09:11
  • 4277

Maven生命周期及其他核心概念

Maven作为一个构建工具由于遵循了约定优于配置的原则,只要编写比Ant所需少得多的脚本就能实现同样的构建。并且Maven还有很多Ant没有的高级特性,例如依赖管理等,这一切使得Maven不仅是构建工...
  • limm33
  • limm33
  • 2016年11月12日 18:11
  • 2009

《Maven进阶》1.maven 项目生命周期与构建原理

maven是一个非常经典的和通用的项目管理工具,虽然现在热炒gradle将作为下一代 项目管理工具来取代maven,但是 由于maven强大和健全的功能,maven还有很强的生命力。 本文将介绍m...
  • u010349169
  • u010349169
  • 2016年01月15日 14:19
  • 5102

深入理解maven及应用(一):生命周期和插件

在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的b...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2014年07月02日 09:11
  • 4277

maven详解之生命周期与插件(一)

Maven是一个优秀的项目管理工具,它能够帮你管理编译、报告、文档等。 Maven的生命周期: maven的生命周期是抽象的,它本身并不做任何的工作。实际的工作都交由"插件"来完成。 maven的每...
  • wanghantong
  • wanghantong
  • 2014年08月05日 21:05
  • 14214

maven常用插件记录

mvn install 是将你打好的jar包安装到你的本地库中,一般没有设置过是在 用户目录下的 .m2\下面。 mvn package 只是将你的代码打包到输出目录,一般的是 target下面。...
  • chang_li
  • chang_li
  • 2016年09月17日 15:53
  • 349

maven生命周期及依赖

maven生命周期 maven把项目构建划分为不同的生命周期,maven有三套生命周期,分别为: clear lifecycle:构建之前的清理工作。包括pre-clear(执行清理之前要做的工...
  • javawebxy
  • javawebxy
  • 2017年04月04日 08:36
  • 390

Maven的生命周期

Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解: 第一,顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使...
  • zsq0511
  • zsq0511
  • 2013年02月25日 13:49
  • 2550
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Maven生命周期详解
举报原因:
原因补充:

(最多只允许输入30个字)