1. 程式人生 > >Maven生命周期

Maven生命周期

rac log val enc 哪裏 -m data 結合 avi

一個完整的項目構建通常包含清理,編譯,測試,打包,繼承部署等步驟,而maven是生命周期的抽象,詳細的任務都交給了插件來完畢。


一、Maven三套生命周期


1 clean生命周期

1.1 pre-clean運行一次清理前須要完畢的工作

1.2 clean清理上一次構建生成的文件

1.3 運行一次清理後須要完畢的工作


2 default生命周期


是生命周期中最核心的部分包括了構建項目的全部步驟。編譯,測試,打包,部署(僅僅介紹核心內容)

2.1 source

2.2 resource

2.3complie

2.4test

2.5test-complie

2.6 package

2.7install

2.8 deploy


3 site生命周期


site是建立和公布項目網站。

本文不重點介紹

二、命令與生命周期

用命令行運行maven任務主要還是調用maven的生命周期階段。

各個生命周期是相互獨立的,而每一個生命周期的階段是有前後的依賴關系的


命令行解釋

mvn clean: 該命令會調用clean生命周期的 clean階段。

運行階段為clean生命周期的pre-cleanclean階段

mvn clean install

該命令調用clean生命周期的clean階段和default生命周期的install階段。

實際運行的階段為clean生命周期的 pre-cleanclean以及

defualt生命周期從validateinstall的全部階段。

結合了兩個生命周期。

三、Maven 插件


生命周期與插件的關系。

我們先來看看maven插件存放在哪裏

maven插件定位在

%本地倉庫%\org\apache\maven\plugins。能夠看到一些下載好的插件:

技術分享

具體查看請查看Maven官網

插件目標Plugin Goals:


一個插件通常能夠完畢多個任務。每個任務就叫做插件目標。對於插件本身。為了能夠復用代碼,往往能夠完畢多個任務。

如:

Maven-dependency-plugin 有十多個目標 dependencyanalyze

當我們運行mvn install命令時,調用的該插件和運行的目標例如以下:

技術分享

技術分享

將插件綁定到生命周期

maven的生命周期與插件是相互綁定的。用以完畢構建任務

這一過程是在生命周期的詳細階段(phase)綁定插件目標(goal)來完畢的。

如:將maven-compiler-plugin插件的compile目標綁定到default

生命周期的compile階段。完畢項目的源碼編譯:

技術分享

如:我們編譯源碼


<plugin> <!-- 編譯源代碼插件 -->
		<!-- 用來編譯位於src/main/java/文件夾下的主源代碼 -->
		<groupId>org.apache.maven.plugins</groupId>  <!-- 項目或者組織的唯一標誌 -->
		<artifactId>maven-compiler-plugin</artifactId> <!-- 項目的通用名稱 -->
		<version>${maven-compiler-plugin.version}</version>
		<!-- 使用maven-compiler-plugin 指定JDK版本號和編碼 -->
		<configuration>    <!-- 通經常使用於私有不開源的plugin -->
			<source>${maven.compile.source}</source>        <!-- 編譯源代碼 jdk版本號編譯 -->
			<target>${maven.compile.target}</target>
			<encoding>${project.build.sourceEncoding}</encoding>      <!-- 用於maven中的文件拷貝 的 編碼格式 -->
		</configuration>
	</plugin>

小結:


Maven的生命周期在項目中貫穿始終,不管是在命令行還是在構建項目時,都脫離不了生命周期的概念,構建與生命周期的關系又是當中的重點

。主要還是要理解生命周期與插件之間的綁定石通過 phasegoals

Maven生命周期