我們執(zhí)行下列命令進(jìn)行構(gòu)建時,其實是跟maven構(gòu)建生命周期有關(guān)
mvn clean package
mvn clean install
mvn clean deploy 。。。。
https://maven.apache.org/plugins/
官網(wǎng)有一句這樣的描述:Maven is - at its heart - a plugin execution framework; all work is done by plugins. maven本質(zhì)是一個插件執(zhí)行框架,所有的工作都有插件來完成。

上圖是一個default生命周期的簡單版
maven一共有三個生命周期,default,site和clean
1.生命周期的組成
生命周期是有一個個階段(phase)組成,每個phase由plugin和goal綁定
plugin是具體的插件,goal是綁定在插件的目標(biāo),一個插件可以綁定多個goal
我們執(zhí)行mvn package命令 就是執(zhí)行的default生命周期的package之前的所有phase包含package,例如package前面的驗證 編譯 測試 等和package各個phase都會執(zhí)行。
當(dāng)然最終完成執(zhí)行任務(wù)的是一個個plugan:goal。
也就是說生命周期由一個個phase組成,phase又由一個個plugin組成,plugin上又綁定了具體的goal
2.多生命周期
多個生命周期可以共同執(zhí)行(也是必須按順序)
我們執(zhí)行mvn clean package時實際上運(yùn)行clean和default兩個生命周期中的多個phase。
3.特殊plugin
一些特殊的命令 例如 mvn dependcy:tree 這是直接運(yùn)行dependcy這個plugin的tree goal,非任何生命周期。
4.增強(qiáng)maven功能
maven提供了一些內(nèi)置的plugin,綁定到了phase上,如果我們需要另外的plugin來增加maven的功能,可以綁定到phase上。例如
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
運(yùn)行mvn verify就能看到一個包含源碼的jar包 綁定到了verify這個phase上
平時我們需要增強(qiáng)擴(kuò)展maven的功能需要一些其它的插件,可以去官網(wǎng)找
http://maven.apache.org/plugins/index.html maven官網(wǎng)