Maven入门指南⑦:Maven的生命周期和插件
Maven入門(mén)指南⑦:Maven的生命周期和插件
一個(gè)完整的項(xiàng)目構(gòu)建過(guò)程通常包括清理、編譯、測(cè)試、打包、集成測(cè)試、驗(yàn)證、部署等步驟,Maven從中抽取了一套完善的、易擴(kuò)展的生命周期。Maven的生命周期是抽象的,其中的具體任務(wù)都交由插件來(lái)完成。Maven為大多數(shù)構(gòu)建任務(wù)編寫(xiě)并綁定了默認(rèn)的插件,如針對(duì)編譯的插件:maven-compiler-plugin。用戶也可自行配置或編寫(xiě)插件。
1 . 三套生命周期
Maven定義了三套生命周期:clean、default、site,每個(gè)生命周期都包含了一些階段(phase)。三套生命周期相互獨(dú)立,但各個(gè)生命周期中的phase卻是有順序的,且后面的phase依賴于前面的phase。執(zhí)行某個(gè)phase時(shí),其前面的phase會(huì)依順序執(zhí)行,但不會(huì)觸發(fā)另外兩套生命周期中的任何phase。
1 . 1 clean生命周期
- pre-clean ? ?:執(zhí)行清理前的工作;
- clean ? ?:清理上一次構(gòu)建生成的所有文件;
- post-clean ? ?:執(zhí)行清理后的工作
1 . 2 default生命周期
default生命周期是最核心的,它包含了構(gòu)建項(xiàng)目時(shí)真正需要執(zhí)行的所有步驟。
- validate
- initialize
- generate-sources
- process-sources
- generate-resources
- process-resources ? ?:復(fù)制和處理資源文件到target目錄,準(zhǔn)備打包;
- compile ? ?:編譯項(xiàng)目的源代碼;
- process-classes
- generate-test-sources
- process-test-sources
- generate-test-resources
- process-test-resources
- test-compile ? ?:編譯測(cè)試源代碼;
- process-test-classes
- test ? ?:運(yùn)行測(cè)試代碼;
- prepare-package
- package ? ?:打包成jar或者war或者其他格式的分發(fā)包;
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install ? ?:將打好的包安裝到本地倉(cāng)庫(kù),供其他項(xiàng)目使用;
- deploy ? ?:將打好的包安裝到遠(yuǎn)程倉(cāng)庫(kù),供其他項(xiàng)目使用;
1 . 3 site生命周期
- pre-site
- site ? ?:生成項(xiàng)目的站點(diǎn)文檔;
- post-site
- site-deploy ? ?:發(fā)布生成的站點(diǎn)文檔
2 . Maven的插件
Maven的核心文件很小,主要的任務(wù)都是由插件來(lái)完成。定位到:%本地倉(cāng)庫(kù)%\org\apache\maven\plugins,可以看到一些下載好的插件:
Maven官網(wǎng)上有更詳細(xì)的官方插件列表:
2 . 1 插件的目標(biāo)(Plugin Goals)
一個(gè)插件通常可以完成多個(gè)任務(wù),每一個(gè)任務(wù)就叫做插件的一個(gè)目標(biāo)。如執(zhí)行mvn install命令時(shí),調(diào)用的插件和執(zhí)行的插件目標(biāo)如下:
每個(gè)插件都有哪些個(gè)目標(biāo),官方文檔有更詳細(xì)的說(shuō)明:Maven Plugins
3 . 將插件綁定到生命周期
Maven的生命周期是抽象的,實(shí)際需要插件來(lái)完成任務(wù),這一過(guò)程是通過(guò)將插件的目標(biāo)(goal)綁定到生命周期的具體階段(phase)來(lái)完成的。如:將maven-compiler-plugin插件的compile目標(biāo)綁定到default生命周期的compile階段,完成項(xiàng)目的源代碼編譯:
3 . 1 內(nèi)置的綁定
Maven對(duì)一些生命周期的階段(phase)默認(rèn)綁定了插件目標(biāo),因?yàn)椴煌捻?xiàng)目有jar、war、pom等不同的打包方式,因此對(duì)應(yīng)的有不同的綁定關(guān)系,其中針對(duì)default生命周期的jar包打包方式的綁定關(guān)系如下:
第二列中,冒號(hào)后面即是綁定的插件目標(biāo),冒號(hào)前面是插件的前綴(prefix),是配置和使用插件的一種簡(jiǎn)化方式。Plugin Prefix
3 . 2 自定義綁定
用戶可以根據(jù)需要將任何插件目標(biāo)綁定到任何生命周期的階段,如:將maven-source-plugin的jar-no-fork目標(biāo)綁定到default生命周期的package階段,這樣,以后在執(zhí)行mvn package命令打包項(xiàng)目時(shí),在package階段之后會(huì)執(zhí)行源代碼打包,生成如:ehcache-core-2.5.0-sources.jar形式的源碼包。
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-source</id><phase>package</phase><!-- 要綁定到的生命周期的階段 --><goals><goal>jar-no-fork</goal><!-- 要綁定的插件的目標(biāo) --></goals></execution></executions></plugin></plugins>…… </build>
4 . 配置插件
Maven插件高度易擴(kuò)展,可以方便的進(jìn)行自定義配置。如:配置maven-compiler-plugin插件編譯源代碼的JDK版本為1.7:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target></configuration> </plugin>
也可以對(duì)插件的各個(gè)目標(biāo)進(jìn)行更具體的配置。Configuring Plug-ins
5 . 插件倉(cāng)庫(kù)
跟其他構(gòu)件一樣,插件也是根據(jù)坐標(biāo)存儲(chǔ)在Maven倉(cāng)庫(kù)中。超級(jí)POM中Maven配置的默認(rèn)插件遠(yuǎn)程倉(cāng)庫(kù)如下:
<pluginRepositories><pluginRepository><id>central</id><name>Central Repository</name><url>http://repo.maven.apache.org/maven2</url><layout>default</layout><snapshots><enabled>false</enabled></snapshots><releases><updatePolicy>never</updatePolicy></releases></pluginRepository> </pluginRepositories>
?
?轉(zhuǎn)自:https://www.cnblogs.com/luotaoyeah/p/3819001.html
總結(jié)
以上是生活随笔為你收集整理的Maven入门指南⑦:Maven的生命周期和插件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: maven发布项目到私服-snapsho
- 下一篇: Maven(插件配置和生命周期的绑定)