Maven-lifecycle、phase、goal

Maven-lifecycle、phase、goal,第1张

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

输出:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存