Maven之——插件目标及绑定

痛定思痛。 2022-09-23 14:46 124阅读 0赞

1、 插件

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

2、 插件目标(PluginGoal)

  1. Maven的核心仅仅定义了抽象的生命周期、具体的任务交由插件完成、插件以独立的形式存在、Maven会在需要的时候下载并使用插件。
  2. 一个插件有可能有多个功能、每个功能就是一个目标。比如maven-dependency-plugin有十多个目标、每个目标对应了一个功能。插件的目标为dependency:analyzedependency:treedependency:list。通用写法、冒号前面是插件前缀、冒号后面是插件的目标。比如compiler:compile

3、 插件绑定

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

3.1、 内置绑定

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

[html] view plain copy

在CODE上查看代码片 派生到我的代码片

  1. clean
  2. pre-clean
  3. clean maven-clean-plugin:clean
  4. post-clean。
  5. site
  6. pre-site
  7. site: maven-site-plugin:site
  8. post-site
  9. site-deploy: maven-site-plugin:deploy
  10. default
  11. process-resources maven-resources-plugin:resources
  12. compile maven-compiler-plugin:compile
  13. process-test-resources maven-resources-plugin:testResources
  14. test-compile: maven-compiler-plugin:testCompile
  15. test: maven-surefire-plugin:test
  16. package maven-jar-plugin:jar
  17. install: maven-install-plugin:install
  18. deploy: maven-deploy-plugin:deploy
  1. 上面三个生命周期中有很多原来的生命周期阶段没有默认绑定插件、也就意味着默认情况下他们没有任何意义。当然如果我们有自己特殊的处理、可以为他们绑定特殊的插件、比如下面会有提到的在打包的时候生成jar包的源码、可以在default生命周期的verify阶段绑定生成源码插件的生成源码的目标。

3.2、 自定义绑定

  1. 自定义绑定允许我们自己掌控插件目标与生命周期的结合、下面以生成项目主代码的源码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**>
  1. 上述配置有插件的坐标声明、还有excutions下面每个excution子元素配置的执行的一个个任务、通过phase指定与生命周期的那个阶段绑定、在通过goals指定执行绑定插件的哪些目标。
  2. 当插件的目标绑定到不同的生命周期阶段的时候、插件目标的执行顺序是有生命周期阶段的顺序决定的、当多个插件目标绑定到同一生命周期阶段的时候、顺序是按照插件声明的顺序来决定目标的执行顺序。

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

发表评论

表情:
评论列表 (有 0 条评论,124人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Maven自定义

    除了内置绑定以外,用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上,这种自定义绑定方式能让Maven项目在构建过程中执行更多更富特色的任务。 一个常见的例子是创建项

    相关 Maven讲解 目标

    Maven讲解之 插件和目标 由之前的篇章中我们了解到了Maven定义了一些抽象的生命周期,而Maven的具体任务(常指Maven的一些常用命令)都是有插件来完成的,而在