Maven第五课:maven插件(plugin)的理解

所有的知识来源于Maven官方网站:https://maven.apache.org/;Maven开发者搭建的官方学习网站永远是最好的学习平台。

在maven中,插件的主要功能是帮助maven完成生命周期的构建。在插件中,可以定义多个goal,生命周期中的每个阶段可以绑定多个插件的多个goal,goal可以被理解为是maven最小的任务单元。在maven的默认生命周期中,提供了一套官方的插件和生命周期阶段绑定的策略。绑定策略根据maven中pom文件指定的打包方式有所不同。maven的默认打包方式是jar包方式。我们以此为例:

phase                            plugin:goal

process-resources      resources:resources

compile                        compiler:compile

process-test-resource sresources:testResources

test-compile                 compiler:testCompile

test                                 surefire:test

package                        jar:jar

install                            install:install

deploy                           deploy:deploy

在上述列表中,例如process-resources      resources:resources,process-resources 是生命周期阶段的名称,第一个resources是resources插件的简称或者是前缀,maven有一套对应表将简称与全称对应。resources对应的插件完全名称是groupId:org.apache.maven.plugins,artifactId:maven-resources-plugin.    在maven中,当我们使用mvn install命令时,maven会按照打包方式调用默认的插件策略去执行任务。但是当我们需要设置个人性化参数时,我们可以在pom文件中的<build>节点下添加<plugin>节点去覆盖默认的配置方式,比如,我们需要指定maven编译器的版本是jdk1.8,我们可以在pom文件中添加如下配置:

<build>

       <plugins>

                  <plugin>

                               <groupId>org.apache.maven.plugins</groupId>

                               <artifactId>maven-compiler-plugin</artfactId>

                               <configuration>

                                            <source>1.8</source>

                                            <target>1.8</target>

                             </configration>

                    </plugin>

            </plugins>

</build>



提供官网提供的官放的插件与生命周期的绑定列表:(maven3.6.2)

<phases>

  <process-resources>

    org.apache.maven.plugins:maven-resources-plugin:2.6:resources

  </process-resources>

  <compile>

    org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

  </compile>

  <process-test-resources>

    org.apache.maven.plugins:maven-resources-plugin:2.6:testResources

  </process-test-resources>

  <test-compile>

    org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile

  </test-compile>

  <test>

    org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test

  </test>

  <package>

    org.apache.maven.plugins:maven-jar-plugin:2.4:jar

  </package>

  <install>

    org.apache.maven.plugins:maven-install-plugin:2.4:install

  </install>

  <deploy>

    org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy

  </deploy>

</phases>


当我们需要使用自己定义的插件时,我们可以将自己插件的goal绑定到生命周期上:例如如下配置

<plugin>

  <groupId>com.mycompany.example</groupId>

  <artifactId>display-maven-plugin</artifactId>

  <version>1.0</version>

  <executions>

    <execution>

      <phase>process-test-resources</phase>

      <goals>

        <goal>time</goal>

      </goals>

    </execution>

  </executions>

</plugin>

上面配置的意义是将display-maven-plugin这个插件的time(goal)绑定到process-test-resources生命周期,maven执行时,会先执行默认绑定的resources:testResources,再执行我们定义个goal。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 经过Maven生命周期的学习,我们知道在Maven core中仅仅定义了抽象的生命周期,具体的实现是由插件完成的,...
    SonyaBaby阅读 5,062评论 0 3
  • 转自:http://www.cnblogs.com/crazy-fox/archive/2012/02/09/23...
    晴天哥_王志阅读 6,732评论 2 27
  • 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编...
    付鹏丶阅读 5,514评论 0 15
  • 生命周期是maven的又一大核心,maven的生命周期是抽象的,而实际行为都是以插件的方式来完成的,下面我将对生命...
    小炼君阅读 4,969评论 0 50
  • 一 边陲的地方,城邦的边缘,是一个小镇。小镇紧挨着长长的一条江,来来往往的马车商队,船...
    鹤落阅读 4,112评论 6 10