栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Maven-lifecycle、phase、goal

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven-lifecycle、phase、goal

对一个项目进行打包时,maven分别执行了 validate->compile->test->package,这个过程就是生命周期(lifecycle)。在生命周期的过程中会有很多的阶段(phase),这些阶段按照既定的顺序执行来完成一个项目的构建。

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

生命周期-lifecycle

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

    Clean Lifecycle:在进行真正的构建之前进行一些清理工作Default Lifecycle:构建的核心部分,编译,测试,打包,部署等等Site Lifecycle:生成项目报告,站点,发布站点
Clean Lifecycle

生命周期Clean Lifecycle包含的阶段(phase):

pre-clean:执行一些需要在clean之前完成的工作clean:移除所有上一次构建生成的文件post-clean:执行一些需要在clean之后立刻完成的工作 Default Lifecycle

生命周期Default Lifecycle包含的阶段(phase):

validate:验证工程是否正确,所需的信息是否完整initialize:初始化构建平台,例如:设置properties或创建目录generate-sourcesprocess-sourcesgenerate-resourcesprocess-resources:复制并处理资源文件,至目标目录,准备打包compile:编译源代码process-classes:源码编译后的后期处理,比如java字节码的增强(优化?)generate-test-sourcesprocess-test-sourcesgenerate-test-resourcesprocess-test-resourcestest-compile:编译测试源代码(默认是test目录下)process-test-classtest:执行单元测试prepare-packagepackage:将工程文件打包为指定的格式,例如JAR,WAR等pre-integration-testintegration-test:集成测试post-integration-testverify:检查package是否有效、符合标准install:将包安装至本地仓库,以让其它项目依赖。deploy:将最终的包复制到远程的仓库,以让其它开发人员与项目共享。 Site Lifecycle

生命周期Site Lifecycle包含的阶段(phase):

pre-site:执行一些需要在生成站点文档之前完成的工作site:生成项目的站点文档post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备site-deploy:将生成的站点文档部署到特定的服务器上

注:执行一个phase将会执行这个lifecycle前面的所有phase。

goal

执行phase实际执行的是goal。如果一个phase没有绑定goal,那这个phase就不会被执行。一些phase默认已经绑定了一些goal。例如:阶段compile绑定的goal是compiler:compile、阶段package绑定的goal是jar:jar。
所以,phase其实就是goal的容器,实际被执行的都是goal。phase被执行时,实际执行的都是被绑定到该phase的goal。

例子:

mvn clean dependency:copy-dependencies package

clean是phase。
dependency:copy-dependencies是plugin-in dependency 的goal copy-dependencies。
package也是一个phase。
maven会顺序执行这3个对象中包含的所有goal。

自定义plugin

我们可以通过在project中使用plugin,将各种各样的goal加入到Maven的phase中,从而根据自己的实际需求,灵活实现各种定制功能。

如何将display-maven-plugin中的goal time绑定到process-test-resources这个phase中

    
   
   ...
   
   
     com.mycompany.example
     display-maven-plugin
     1.0
     
       
         process-test-resources
         
           time
         
       
     
   

在编译时执行HelloWord类的man方法

    
   
   ...
   
       org.codehaus.mojo
       exec-maven-plugin
       1.2.1
       
           
               
               compile
               
                   
                   java
               
               
                   x.x.x.HelloWord
               
           
       
   

如果想知道插件中包含哪些goal:

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

输出:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号