什麼是 maven?
對於已經使用過 maven 的用戶來講 maven 就是一個架構工具,使用它能夠將代碼構建成一個可發佈的工具.固然也有人會說maven是一個項目管理的工具。固然各有各的說法,那麼一個更正式的 Apache Maven 的定義: Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。架構
如何理解一個項目的概念模型?
Maven 維護了一個項目的模型,意味着不只要將其源碼編譯成字節碼文件,還須要包含軟件開發的描述信心,爲項目指定一個惟一的座標。主要有如下特色:maven
- 依賴管理:一個項目包含組標識符,構件標識符和版本的惟一的座標定義的。所以在項目之間可使用這些聲明來添加依賴。
- 遠程倉庫:和項目的依賴有關係,咱們可使用定義在項目對象模型(POM)中的座標來建立 Maven 構件的倉庫。
- 全局性構建邏輯重用:在項目模型對象中咱們能夠引入不少的插件使其一塊兒工做。
- 工具的繼承:對於不少的IDE都支持經過 maven 建立項目。
Maven VS Ant?
Ant: 工具
- Ant 約定一個項目的目錄結構必須是什麼樣子的,可是你必須明確的告訴 Ant 哪裏去找源代碼,哪裏放置輸出。
- Ant 是程序化的,你必須明確的告訴 Ant 作什麼,何時作。
- Ant 沒有生命週期,你必須定義目標和目標之間的依賴。
Mavne: 測試
-
- Maven 是有必定的約定的,基於maven的項目,源碼和測試代碼是在規定的文件中的。
- Maven 是聲明式的,你通常只須要建立一個pom文件而後將源碼放在指定的目錄。maven就會爲你作你須要作的事情。
- Mavne 是有生命週期的,當你運行一個命令的時候,這條命令就會告訴maven要去作哪些事情知道這個命令執行完畢。