阅读更多

0顶
0踩

开源软件

原创新闻 Maven生命周期和阶段详解

2017-06-16 17:20 by 见习记者 蜗牛天空 评论(0) 有5904人浏览

一直想系统全面的记录maven的生命周期,今天工作碰到maven配置疑惑,一生气,看了官网的介绍,现记录以便日后回溯,自己翻译的,如有误差,希望帮我指出,这里只讲jar,pom,war,maven-plugin

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

 

0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Try catch中,报错之后后面代码是不是不会运行?

    块中的代码引发错误时,该块中后续的代码将不会执行。控制流将直接跳转到相应的。块中的后续代码将不会执行,控制流将直接跳转到。块执行完成后,这些代码将正常执行。块,如果有的话,来处理错误。块将不会执行,...

  • java parse转换异常_为什么使用 parse() 方法会报错?但是添加了异常处理之后又正常运行了?...

    已经确定SimpleDateFormat()方法里的格式没有错,为什么添加了异常处理之后也没有报错又正常运行了?不添加异常处理的话如何使用parse() 方法?或者说我的代码应该怎么改?代码如下:第11行为错误代码,下面注释掉的...

  • 【Python异常处理】:如何处理异常报错?

    一旦Python脚本发生异常,程序需捕获并处理异常。...当Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。.........

  • 关于try语句块中含有return的报错的问题

    写代码遇到的问题 try块有return语句,catch块没有return,函数末尾...为什么会提示缺少return语句呢?这是因为编译器认为try块中是又可能产生异常操作的,也就是说在return语句之前如果出现异常的话,那么return语句根

  • python try expect语句_python try except语句为什么会出现异常

    python try except语句为什么会出现异常发布时间:2020-09-10 16:23:09来源:亿速云阅读:88作者:Leah这篇文章将为大家详细讲解有关python try except语句为什么会出现异常,文章内容质量较高,因此小编分享给大家...

  • 为什么python不报错不出结果_python异常处理之try finally不报错的原因

    time.sleep(60 * 60) 但是遇到了一个问题 程序显示“死掉后”并不会显示堆栈的错误信息 排查后发现,程序打印“堆栈的错误信息”并不是异步的,“堆栈的错误信息”会等到finally内的代码块执行完毕后才会输出 所以,...

  • try-catch 中返回值 报错问题的探究

    今天下午在写一个数据库操作的工具类时,发现了一个问题,先贴代码吧: @Override public User selectUser(String username) { User user = null; Connection conn =null; PreparedStatement ps = null; ...

  • 【Java异常易错点】try或catch语句块中return后,finally还会执行吗?

    1、第一个输出:num为0的时候,分母为0,那么便会报出异常java.lang.ArithmeticException...2、针对第二个输出:num为1 的时候,在try语句块中result应该是为2的,随后又return result?那此时finally 还会执行吗?

  • js中的try...catch笔记

    try…catch可以规避由于报错而导致程序终止,他会跳过错误(跳出try…catch)继续执行 try…catch语句标记要尝试的 语句块,并指定一个出现异常时抛出的响应。语法: try { try_statements // 需要被执行的语句 } ...

  • try-catch 报错

    try-catch的意义: 1、报错处理,输出日志 ...1、try-catch代码块发生错误时,不会影响方法内try-catch块之外的代码执行,且可以处理和输出日志。 2、方法块加上throws Exception后,发生错误时方法体内发生错误的...

  • 使用 try catch 防止页面报错而卡死

    try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。...//不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally ...

  • python跳过出错下一个循环_for循环中的tryexcept块跳过下一个迭代?

    Python(和大多数语言)很可能会混淆,如果您在对列表使用迭代器的同时修改列表。在这段代码就是这个问题的牺牲品,因为你修改的是你正在迭代的同一个列表。更常见的是构造一个新的列表作为输出。下面是一个例子:...

  • try和except的防止程序报错而终止运行

    try: 函数里放容易出错的代码 except: 函数里放可以安全运行的代码,或者重新开始运行相关...注:try里面的函数不能成功运行会转入except运行,所以except要放不可能出错的代码,并且还要使整个工程闭环运行。 ...

  • js 报错提示三连之try...catch

    try…catch 的功能就是用来捕获报错, 无论系统错误还是自定义错误(throw)都可以 try…catch - JavaScript | MDN try…catch语句标记要尝试的语句... // 如果在try块里有异常被抛出时执行的语句 // 没有错误则不会执行

  • java 调用某个方法方法报错了之后为什么没有走到这个调用的catch中

    代码是这样的 public class test{ private Logger logger = LoggerFactory.getLogger(this.getClass()); /** 异步发送邮件 **/ @Async @Override public void sendEmailAsync(List testPOS, String status){ for ...

  • java:try-catch后写不写finally的区别

    相信有小伙伴跟我一样写finally和不写finally,try完或者catch完之后,一样会往后执行,那么写finally的意义何在呢? 我先来给出我理解的答案: finally是防止try里面有return语句而发生catch没及时关闭一些东西...

  • JS的报错处理(throw、try、catch)

    如果调用者函数中没有catch块,程序将会终止。 当日常代码逻辑较复杂时可以使用异常快速定位错误,并进行相应处理。 throw 抛出异常,可以是一段字符串、数字、布尔 function test(i) { if(i === 0) { ...

  • python中的try与if_python中if和try的区别

    Python 编程中 if 语句用于控制程序的执行,基本形式为:if判断条件:执行语句……else:执行语句……python中的try语句是提供了程序的异常处理功能下面是简单的例子,它打开一个文件,在该文件...

  • Java获取Try,Catch报错信息数据

    图二展示的代码,是打印多种一场信息的代码部分,图一是打印的日志信息。对应可以看到 error.getCause().getMessage()可以得到比较完善,直观的错误信息。...

  • try块中含有return报错问题

    try块中含有return报错问题

Global site tag (gtag.js) - Google Analytics