Maven之——插件目标及绑定

1、    插件


        Maven三套生命周期定义各个阶段、不做任何实际工作、实际工作都是由插件来完成的、每个生命周期阶段都是由插件的目标来完成。

2、    插件目标(PluginGoal)


        Maven的核心仅仅定义了抽象的生命周期、具体的任务交由插件完成、插件以独立的形式存在、Maven会在需要的时候下载并使用插件。

        一个插件有可能有多个功能、每个功能就是一个目标。比如maven-dependency-plugin有十多个目标、每个目标对应了一个功能。插件的目标为dependency:analyze、dependency:tree和dependency:list。通用写法、冒号前面是插件前缀、冒号后面是插件的目标。比如compiler:compile。


3、    插件绑定


        Maven的生命周期与插件绑定、具体而言是生命周期的阶段与插件绑定、比如default生命周期的compile阶段可以由maven-compile-plugin插件的compile目标完成、将他们绑定就能实现编译的目的。


    3.1、    内置绑定


        Maven为实现快速构建、有一套内置的插件绑定。三套生命周期的插件绑定具体如下(其实是各个生命周期阶段与插件的目标的绑定)、其中default生命周期的构建方式会其打包类型有关、打包类型在POM中<packaging>packageType</packaging>指定、一般有jar、war两种类型、下面是 常用的jar的构建过程:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.                                                                         clean  
  2.   
  3. pre-clean          
  4. clean                                                                                                             maven-clean-plugin:clean  
  5. post-clean。  
  6.                                                                         site  
  7. pre-site  
  8. site:                                                                                                                maven-site-plugin:site  
  9. post-site  
  10. site-deploy:                                                                                      maven-site-plugin:deploy  
  11.   
  12.                                                                         default  
  13. process-resources                                maven-resources-plugin:resources  
  14. compile                                                                       maven-compiler-plugin:compile  
  15. process-test-resources            maven-resources-plugin:testResources  
  16. test-compile:                                      maven-compiler-plugin:testCompile  
  17. test:                                                                 maven-surefire-plugin:test  
  18. package                                                                       maven-jar-plugin:jar  
  19. install:                                                             maven-install-plugin:install  
  20. deploy:                                                            maven-deploy-plugin:deploy  


        上面三个生命周期中有很多原来的生命周期阶段没有默认绑定插件、也就意味着默认情况下他们没有任何意义。当然如果我们有自己特殊的处理、可以为他们绑定特殊的插件、比如下面会有提到的在打包的时候生成jar包的源码、可以在default生命周期的verify阶段绑定生成源码插件的生成源码的目标。


    3.2、    自定义绑定


        自定义绑定允许我们自己掌控插件目标与生命周期的结合、下面以生成项目主代码的源码jar为例。使用到的插件和他的目标为:maven-source-plugin:jar-no-fork、将其绑定到default生命周期阶段verify上(可以任意指定三套生命周期的任意阶段)、在项目的POM配置中(也可以在父POM中配置、后面聚合与继承会有提到)

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <build>  
  2.     <plugins>  
  3.         <plugin>  
  4.             <groupId>org.apache.maven.plugins</groupId>  
  5.             <artifactId>maven-source-plugin</artifactId>  
  6.             <version>2.1.1</version>  
  7.             <executions>  
  8.                 <execution>  
  9.                     <id>attach-sources</id>  
  10.                     <phase>verify</phase>  
  11.                     <goals>  
  12.                         <goal>jar-no-fork</goal>  
  13.                     </goals>  
  14.                 </execution>  
  15.             </executions>  
  16.         </plugin>  
  17.     </plugins>  
  18. </build>  

        上述配置有插件的坐标声明、还有excutions下面每个excution子元素配置的执行的一个个任务、通过phase指定与生命周期的那个阶段绑定、在通过goals指定执行绑定插件的哪些目标。

        当插件的目标绑定到不同的生命周期阶段的时候、插件目标的执行顺序是有生命周期阶段的顺序决定的、当多个插件目标绑定到同一生命周期阶段的时候、顺序是按照插件声明的顺序来决定目标的执行顺序。

注:一个生命周期阶段能绑定到多个插件目标,同理,一个插件目标也能绑定到多个生命周期阶段。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值