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

所有的知識來源于Maven官方網(wǎng)站:https://maven.apache.org/;Maven開發(fā)者搭建的官方學習網(wǎng)站永遠是最好的學習平臺。

在maven中,插件的主要功能是幫助maven完成生命周期的構(gòu)建。在插件中,可以定義多個goal,生命周期中的每個階段可以綁定多個插件的多個goal,goal可以被理解為是maven最小的任務(wù)單元。在maven的默認生命周期中,提供了一套官方的插件和生命周期階段綁定的策略。綁定策略根據(jù)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會按照打包方式調(diào)用默認的插件策略去執(zhí)行任務(wù)。但是當我們需要設(shè)置個人性化參數(shù)時,我們可以在pom文件中的<build>節(jié)點下添加<plugin>節(jié)點去覆蓋默認的配置方式,比如,我們需要指定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>



提供官網(wǎng)提供的官放的插件與生命周期的綁定列表:(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執(zhí)行時,會先執(zhí)行默認綁定的resources:testResources,再執(zhí)行我們定義個goal。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 經(jīng)過Maven生命周期的學習,我們知道在Maven core中僅僅定義了抽象的生命周期,具體的實現(xiàn)是由插件完成的,...
    SonyaBaby閱讀 1,403評論 0 3
  • 轉(zhuǎn)自:http://www.cnblogs.com/crazy-fox/archive/2012/02/09/23...
    晴天哥_王志閱讀 2,429評論 2 27
  • 我們都知道Maven本質(zhì)上是一個插件框架,它的核心并不執(zhí)行任何具體的構(gòu)建任務(wù),所有這些任務(wù)都交給插件來完成,例如編...
    付鵬丶閱讀 1,690評論 0 15
  • 生命周期是maven的又一大核心,maven的生命周期是抽象的,而實際行為都是以插件的方式來完成的,下面我將對生命...
    小煉君閱讀 1,313評論 0 50
  • 一 邊陲的地方,城邦的邊緣,是一個小鎮(zhèn)。小鎮(zhèn)緊挨著長長的一條江,來來往往的馬車商隊,船...
    鶴落閱讀 892評論 6 10

友情鏈接更多精彩內(nèi)容