当我们对一个项目进行打包时,maven分别执行了

验证(validate) ==> 编译源码(compile)
==> 编译测试源码(test-compile) ==> 单元测试(test)
==> 打包(package)

这个过程就是生命周期(lifecycle)。在生命周期的过程中会有很多的阶段(phase),这些阶段按照既定的顺序执行来完成一个项目的构建。

在生命周期中,各个阶段的工作由插件来完成(plugin),一个插件通常可以完成一个或者多个阶段的工作。每个阶段的工作对应插件中的一个目标(goal)。不同的插件结合起来,就完成了政哥项目的构建。

maven的生命周期可以分为三大类

1.Clean Lifecycle :在进行真正的构建之前进行一些清理工作

pre-clean 执行一些需要在clean之前完成的工作

clean 移除所有上一次构建生成的文件

post-clean 执行一些需要在clean之后立刻完成的工作

2.Site Lifecycle :生成项目报告,站点,发布站点

pre-site 执行一些需要在生成站点文档之前完成的工作

site 生成项目的站点文档

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy 将生成的站点文档部署到特定的服务器上

然后看,最常用,最重要的,名字却不起眼的

3.Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等

validate 验证工程是否正确,所需的信息是否完整

initialize 初始化构建平台,例如:设置properties或创建目录

generate-sources

process-sources

generate-resources

process-resources 复制并处理资源文件,至目标目录,准备打包

compile 编译源代码

process-classes 源码编译后的后期处理,比如java字节码的增强(优化?)

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources

test-compile 编译测试源代码(默认是test目录下)

process-test-class

test 执行单元测试

prepare-package

package 将工程文件打包为指定的格式,例如JAR,WAR等

pre-integration-test

integration-test 集成测试

post-integration-test

verify 检查package是否有效、符合标准

install 将包安装至本地仓库,以让其它项目依赖。

deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

上面是对生命周期及生命周期对应的阶段的介绍。下面说明下插件中目标(goal)的查询方式

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-eclipse-plugin:2.10

下面是一个使用了phase和goal的小例子

            <plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>1.2.1</version><executions><execution><!-- 绑定到编译的生命周期 --><phase>compile</phase><goals><!-- 执行目标java --><goal>java</goal></goals><configuration><mainClass>x.x.x.HelloWord</mainClass></configuration></execution></executions></plugin>

这个配置会在编译时执行HelloWord类的man方法。

eclipse maven打包_Maven中的几个重要概念:lifecycle, phase 和 goal相关推荐

  1. eclipse maven打包_Maven 学习

    1 Maven 简介 Maven 使用项目对象模型(POM,Project Object Model) 的概念,可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具 2 Maven 的 ...

  2. eclipse maven打包_maven的通俗易懂的用法

    也许是本人不才,初识Maven时,被各种不明所以的教程搞得一头雾水,而在后来的使用中,我发现Maven大部分功能没有想象的那么困难. 本篇文章面向Maven初学者,希望能让其以最快的速度了解Maven ...

  3. eclipse maven打包_自动化管理项目,Maven仓库配置、安装和使用

    一. Maven有什么作用? 1.让maven仓库自动帮你下载jar包 maven项目会有一个 pom.xml文件, 在这个文件里面,只要你添加相应配置,他就会自动帮你下载相应jar包,不用你铺天盖地 ...

  4. SpringBoot项目在使用Maven打包war中遇到的问题

    问题描述 在使用maven打包(package)springboot项目为war项目后,在本地机器上使用Tomcat跑这个项目,访问资源时出现下面的错误: o.s.b.w.servlet.suppor ...

  5. eclipse maven打包jar 部分jsp无法访问_Maven系列教材 (九)- 在Eclipse中创建maven风格的java web项目...

    Maven系列教材 (九)- 在Eclipse中创建maven风格的java web项目 步骤1:删除j2ee目录步骤2:新建Maven 项目步骤3:这个界面点下一步步骤4: 这个界面使用webapp ...

  6. eclipse maven打包_我的Java Web之路47 - 使用Maven改造租房网工程

    本系列文章旨在记录和总结自己在Java Web开发之路上的知识点.经验.问题和思考,希望能帮助更多(Java)码农和想成为(Java)码农的人. 目录 介绍 原来的租房网工程结构 改造思路 将原有工程 ...

  7. maven打包 jar中没有主清单属性

    找了半天,看别人博客说这样那样设置, 最后 <pluginManagement></pluginManagement> 标签去掉就好了,一般遇到这样的bug 怎么分析这个问题最 ...

  8. maven 打包报错 surefire-reports for the individual test results.

    Eclipse Maven打包报错 [ERROR] [ERROR] Please refer to D:\File\workspace\izh-common-util\target\surefire- ...

  9. Maven打包报错Unknown lifecycle phase “mvn“. You must specify a valid lifecycle

    今天小伙伴问我,他的Idea打包,怎么都打不成功.一只报错: Unknown lifecycle phase "mvn". You must specify a valid lif ...

最新文章

  1. php数据库字段类型,mysql 字段类型说明
  2. 二十五、Node中的Buffer缓冲器和EventEmitter事件触发器
  3. if match header test - 428 Precondition required
  4. 【Solr】 solr对拼音搜索和拼音首字母搜索的支持
  5. java中间语言汇编语言_中间语言(IL) | 学步园
  6. PHP新闻APP,【优速软件】APP/小程序接口:全部新闻列表,POSCMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...
  7. 【大数据面试宝典】 第一篇 Hadoop 面试题
  8. react native与夜神模拟器结合使用运行安卓平台
  9. 网络管理(课程总结3)Week12 澳大利亚维多利亚大学VIT1104 Computer Networks
  10. 用Keras和直方图均衡化进行深度学习的图像增强
  11. python内turtle库应用
  12. 【学习笔记】彻底删除2345输入法
  13. Job Shop Schedule 生产调度问题 (一) 简介
  14. 显示seata连接不上127.0.0.1:2181
  15. java实现掌阅Ireader签到领取阅饼
  16. MapGuide的历史
  17. 单片机 软件延时时间控制
  18. 概述知识图谱在人工智能中的应用
  19. Android利用WiFiManager扫描AP列表的实例
  20. 天津电子计算机职专什么时候开学,2020年开学时间表

热门文章

  1. Linux主机WordPress伪静态设置方法
  2. ylb:使用sql语句实现添加、删除约束
  3. TxQueryRunner-JDBC小工具
  4. ArcGIS问题小记
  5. 域名端口自己电脑做服务器续,用默认端口,自动跳转到默认项目 【直接用域名访问我们本机的项目】...
  6. 在RHEL5下构建基于系统用户的Postfix邮件系统
  7. SQLSERVER拆分字符串的函数(表值函数)
  8. 获得一个字符的ASCII值
  9. python3 判断list是否包含另一个list
  10. Linux Rootkit 系列四:对于系统调用挂钩方法的补充