maven预定义了许多的阶段(phase),每个插件都依附于这些阶段,并且在进入某个阶段的时候,调用运行这些相关插件的功能。我们先来看完整的maven生命周期:

生命周期 阶段描述
validate 验证项目是否正确,以及所有为了完整构建必要的信息是否可用
generate-sources 生成所有需要包含在编译过程中的源代码
process-sources 处理源代码,比如过滤一些值
generate-resources 生成所有需要包含在打包过程中的资源文件
process-resources 复制并处理资源文件至目标目录,准备打包
compile 编译项目的源代码
process-classes 后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement)
generate-test-sources 生成所有包含在测试编译过程中的测试源码
process-test-sources 处理测试源码,比如过滤一些值
generate-test-resources 生成测试需要的资源文件
process-test-resources 复制并处理测试资源文件至测试目标目录
test-compile 编译测试源码至测试目标目录
test 使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
prepare-package 在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在Maven 2.1+中实现)
package 将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR
pre-integration-test 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境
integration-test 如果有必要的话,处理包并发布至集成测试可以运行的环境
post-integration-test 执行一些在集成测试运行之后需要的动作。如清理集成测试环境。
verify 执行所有检查,验证包是有效的,符合质量规范
install 安装包至本地仓库,以备本地的其它项目作为依赖使用
deploy 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)

maven核心的插件列表可以参考 http://maven.apache.org/plugins/index.html 。这里仅列举几个常用的插件及其配置参数:

  1. clean插件 
    只包含一个goal叫做 clean:clean ,负责清理构建时候创建的文件。 默认清理的位置是如下几个变量指定的路径project.build.directory, project.build.outputDirectory, project.build.testOutputDirectory, and project.reporting.outputDirectory 。
  2. compiler插件 
    包含2个goal,分别是 compiler:compile 和 compiler:testCompile 。可以到这里查看两者的具体参数设置:compile, testCompile 。
  3. surefire插件 
    运行单元测试用例的插件,并且能够生成报表。包含一个goal为 surefire:test 。主要参数testSourceDirectory用来指定测试用例目录,参考完整用法帮助
  4. jar 
    负责将工程输出打包到jar文件中。包含两个goal,分别是 jar:jar , jar:test-jar 。两个goal负责从classesDirectory或testClassesDirectory中获取所有资源,然后输出jar文件到outputDirectory中。
  5. war 
    负责打包成war文件。常用goal有 war:war ,负责从warSourceDirectory(默认${basedir}/src/main/webapp)打包所有资源到outputDirectory中。
  6. resources 
    负责复制各种资源文件,常用goal有 resources:resources ,负责将资源文件复制到outputDirectory中,默认为${project.build.outputDirectory}。
  7. install 
    负责将项目输出(install:install)或者某个指定的文件(install:install-file)加入到本机库%USERPROFILE%/.m2/repository中。可以用 install:help 寻求帮助。
  8. deploy 
    负责将项目输出(deploy:deploy)或者某个指定的文件(deploy:deploy-file)加入到公司库中。
  9. site 
    将工程所有文档生成网站,生成的网站界面默认和apache的项目站点类似,但是其文档用doxia格式写的,目前不支持docbook,需要用其他插件配合才能支持。需要指出的是,在maven 2.x系列中和maven3.x的site命令处理是不同的,在旧版本中,用 mvn site 命令可以生成reporting节点中的所有报表,但是在maven3中,reporting过时了,要把这些内容作为 maven-site-plugin的configuration的内容才行。详细内容可以参考http://www.wakaleo.com/blog/292-site-generation-in-maven-3

如果直接执行 clean install,那么maven 先执行clean,然后默认执行resource, compiler ,test,package(如果maven 配置了resource 插件和 test插件),最后到install 。

maven的生命周期和核心插件的功能相关推荐

  1. Maven的生命周期和maven-assembly-plugin插件使用

    2019独角兽企业重金招聘Python工程师标准>>> 记住,运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译, ...

  2. Maven的生命周期和插件

    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/83795622冷血之心的博客) 关注微信公众号(文强的技术小屋), ...

  3. Maven入门指南⑦:Maven的生命周期和插件

    Maven入门指南⑦:Maven的生命周期和插件 一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周 ...

  4. maven(7)生命周期和插件

    [0]README 1)本文部分文字转自 "maven实战",旨在 review  "maven(7)生命周期和插件" 的相关知识: 2)maven 另外两个核 ...

  5. Maven入门-6-Maven的生命周期和核心命令详细介绍

    本篇来介绍Maven的生命周期和前面介绍过几个命令的详细介绍过程.先介绍生命周期,生命周期中不同阶段就包括了一些命令,所以理解了生命周期,再来看看每一个命令的详细使用过程. 1.Maven的生命周期分 ...

  6. Maven之生命周期和插件

    Maven之坐标和依赖_jerry_dyy的博客-CSDN博客 Maven之仓库_jerry_dyy的博客-CSDN博客 Maven之聚合与继承_jerry_dyy的博客-CSDN博客 Maven之生 ...

  7. Maven的生命周期与插件

    项目构建生命周期 Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM).Maven构建生命周期描述的是一次构建过程经历经历了多少个事件.对项目构建的生命周期划分为3 ...

  8. Maven构建生命周期和各种plugin插件

    总揽生命周期(lifecycle) 一般构建项目时执行的最常用的命领是mvn clean install,如果是IDE就是点对应的按纽其实还是调的mvn命令,除非你使用的IDE内嵌的maven(不推荐 ...

  9. Maven基础-Maven的生命周期、命令和插件(6)- mvn test命令详解

    1.项目背景 本文在 <Maven基础-Maven的生命周期.命令和插件(2)- 项目准备> 一文的基础上进行命令的演示. 如何各位coder只是单纯的想了解 mvn test 命令,则可 ...

最新文章

  1. 《剑指offer》c++版本 18.删除链表的结点
  2. 车联网行业No.1元征科技的云端架构实现
  3. 底层实现_Redis有序集合zset的底层实现
  4. 数据分析与挖掘实战-基于水色图像的水质评价
  5. wait放弃对象锁_Java线程中wait、await、sleep、yield、join用法总结
  6. uni-calendar更改打点颜色实现签到和缺勤不同打点颜色效果
  7. ngnix 负载均衡原理
  8. X^2 Mod P(51Nod-1014)
  9. mysql 命令导入sql文件导出sql文件
  10. SQLi LABS Less-39
  11. Oracle Siebel CRM技术的前景
  12. C# 注册Dll文件
  13. c语言bim的题目,BIM考试选择题精选
  14. 通过 Nginx 来实现禁止国外IP访问网站
  15. SCARA机器人matlab仿真
  16. ArcFace论文翻译
  17. 学习R语言这几本电子书就够了!
  18. 开源库MusicPlayManager - 封装StarrySky音乐库
  19. 干货,QQ音乐歌手列表解密方法!
  20. 程序员必知,招聘黑话大全!

热门文章

  1. Please copy/symlink the 'missing image' image at xxx
  2. C++自定义高斯滤波器
  3. 微型计算机启天A5000-B124说明,微型计算机原理及应用知识点总结
  4. c语言自动ejter,Skinnskalle eller ej, ingen ska behöva dö för sina åsikter
  5. android项目打包成apk
  6. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
  7. org.xml.sax.SAXParseException: Content is not allowed in trailing section
  8. Node环境的配置与安装(windows系统)(超详细)
  9. How do I get the lowest value of all the non zero value pixels?
  10. Redis数据恢复--误删数据后一次吓尿的经历