美文网首页
Maven第五课:maven插件(plugin)的理解

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

作者: Carter强 | 来源:发表于2019-10-13 21:35 被阅读0次

    所有的知识来源于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插件(plugin)的理解

          本文链接:https://www.haomeiwen.com/subject/hglnpctx.html