maven(一)-介紹
一、Maven 是什麼?
Maven 是一個專案管理和整合工具。Maven 為開發者提供了一套完整的構建生命週期框架。開發團隊幾乎不用花多少時間就能夠自動完成工程的基礎構建配置,因為 Maven 使用了一個標準的目錄結構和一個預設的構建生命週期。
在有多個開發團隊環境的情況下,Maven 能夠在很短的時間內使得每項工作都按照標準進行。因為大部分的工程配置操作都非常簡單並且可複用,在建立報告、檢查、構建和測試自動配置時,Maven 可以讓開發者的工作變得更簡單。
Maven 能夠幫助開發者完成以下工作:
- 構建
- 文件生成
- 報告
- 依賴
- SCMs
- 釋出
- 分發
- 郵件列表
總的來說,Maven 簡化了工程的構建過程,並對其標準化。它無縫銜接了編譯、釋出、文件生成、團隊合作和其他任務。Maven 提高了重用性,負責了大部分構建相關的任務。
二、Maven 的歷史
Maven 最初是在 Jakarta Turbine 專案中為了簡化構建過程而設計的。專案中有幾個子工程,每個工程包含稍有不同的 ANT 檔案。JAR 檔案使用 CVS 管理。
Apache 小組隨後開發了 Maven,能夠同時構建多個工程、釋出工程資訊、部署工程、在幾個工程中共享 JAR 檔案,並且協助團隊合作。
三、Maven 的目標
Maven 的主要目的是為開發者提供
- 一個可複用、可維護、更易理解的工程綜合模型
- 與這個模型互動的外掛或者工具
Maven 工程結構和內容被定義在一個 xml 檔案中 - pom.xml,是 Project Object Model (POM) 的簡稱,此檔案是整個 Maven 系統的基礎元件。
四、約定優於配置
Maven 使用約定而不是配置,意味著開發者不需要再自己建立構建過程。
開發者不需要再關心每一個配置細節。Maven 為工程提供了合理的預設行為。當建立 Maven 工程時,Maven 會建立預設的工程結構。開發者只需要合理的放置檔案,而在 pom.xml 中不再需要定義任何配置。
舉例說明,下面的表格展示了工程原始碼檔案、資原始檔的預設配置,和其他一些配置。假定 ${basedir}
表示工程目錄:
配置項 | 預設值 |
---|---|
source code | ${basedir}/src/main/java |
resources | ${basedir}/src/main/resources |
Tests | ${basedir}/src/test |
Complied byte code | ${basedir}/target |
distributable JAR | ${basedir}/target/classes |
為了構建工程,Maven 為開發者提供了選項來配置生命週期目標和工程依賴(依賴於 Maven 的外掛擴充套件功能和預設的約定)。大部分的工程管理和構建相關的任務是由 Maven 外掛完成的。