Maven生命周期
一個完整的項目構建通常包含清理,編譯,測試,打包,繼承部署等步驟,而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-clean和clean階段
mvn clean install
實際運行的階段為clean生命周期的 pre-clean,clean以及
defualt生命周期從validate到install的全部階段。
結合了兩個生命周期。
三、Maven 插件
生命周期與插件的關系。
我們先來看看maven插件存放在哪裏
maven插件定位在
%本地倉庫%\org\apache\maven\plugins。能夠看到一些下載好的插件:
具體查看請查看Maven官網
插件目標Plugin Goals:
一個插件通常能夠完畢多個任務。每個任務就叫做插件目標。對於插件本身。為了能夠復用代碼,往往能夠完畢多個任務。
如:
Maven-dependency-plugin 有十多個目標 dependency:analyze
當我們運行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的生命周期在項目中貫穿始終,不管是在命令行還是在構建項目時,都脫離不了生命周期的概念,構建與生命周期的關系又是當中的重點
。主要還是要理解生命周期與插件之間的綁定石通過 phase與goals。
Maven生命周期