maven包含了一個項目對象模型(Project Object Mobel)、一組標準集合、一個項目生命週期(Project Lifecycle)、一個依賴管理系統(Dependency Management System)以及用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。
下圖就是maven的概念模型圖。
項目對象模型(Project Object Mobel)
每個maven工程中都有一個pom.xml文件(核心配置文件),通過pom.xml文件可以定義項目的座標、項目依賴、項目信息以及插件目標等。例如,有下面這樣一個pom.xml文件,你可以清楚地看到該文件裏面定義了工程所依賴的jar包、本工程的座標以及打包運行方式等。
依賴管理系統(Dependency Management System)
maven的基礎核心,通過maven的依賴管理對項目所依賴的jar包進行統一規範的管理。例如,項目依賴Struts2.3.24,通過在pom.xml文件中定義其依賴即可將Struts2的jar包自動加入到工程中,如下所示便是Struts2.3.24的依賴定義。
<dependency>
<groundId>org.apache.struts</groundId>
<artifactId>struts2-core</artifactId>
<version>2.3.24</version>
</dependency>
項目生命週期(Project Lifecycle)
使用maven可以完成項目的構建,項目構建包括:清理、編譯、測試、部署等過程,maven將這些過程規範爲一個生命週期,如下圖所示便是項目生命週期的各個階段。
實際上,一個軟件開發人員每天都在完成項目的生命週期:清理、編譯、測試、部署等,有的手工完成,有的通過Ant(也是一個項目構建工具)腳本自動完成。而且,從上圖可以看出,maven就是要保證一致的項目構建流程,它通過執行一些簡單命令即可實現上邊生命週期的各個過程,比如執行mvn compile命令可以完成編譯的過程,執行mvn clean命令可以完成清理的過程。
一組標準集合
maven爲整個項目管理過程定義了一組標準,比如,通過maven構建工程有標準的目錄結構,有標準的生命週期階段,依賴管理有標準的座標定義等。這樣一來,一個maven工程便有了自己標準的工程目錄結構與標準的座標定義了。
插件目標
maven管理項目生命週期過程都是基於插件來完成的。也可以說maven中的所有功能都是使用插件來實現的。