1128. 等價多米諾骨牌對的數量
Maven 功能
Maven 能夠幫助開發者完成以下工作:
- 構建
- 文件生成
- 報告
- 依賴
- SCMs
- 釋出
- 分發
- 郵件列表
約定配置
Maven 提倡使用一個共同的標準目錄結構,Maven 使用約定優於配置的原則,大家儘可能的遵守這樣的目錄結構。如下所示:
目錄 | 目的 |
---|---|
${basedir} | 存放pom.xml和所有的子目錄 |
${basedir}/src/main/java | 專案的java原始碼 |
${basedir}/src/main/resources | 專案的資源,比如說property檔案,springmvc.xml |
${basedir}/src/test/java | 專案的測試類,比如說Junit程式碼 |
${basedir}/src/test/resources | 測試用的資源 |
${basedir}/src/main/webapp/WEB-INF | web應用檔案目錄,web專案的資訊,比如存放web.xml、本地圖片、jsp檢視頁面 |
${basedir}/target | 打包輸出目錄 |
${basedir}/target/classes | 編譯輸出目錄 |
${basedir}/target/test-classes | 測試編譯輸出目錄 |
Test.java | Maven只會自動執行符合該命名規則的測試類 |
~/.m2/repository | Maven預設的本地倉庫目錄位置 |
Maven 特點
-
專案設定遵循統一的規則。
-
任意工程中共享。
-
依賴管理包括自動更新。
-
一個龐大且不斷增長的庫。
-
可擴充套件,能夠輕鬆編寫 Java 或指令碼語言的外掛。
-
只需很少或不需要額外配置即可即時訪問新功能。
-
基於模型的構建− Maven能夠將任意數量的專案構建到預定義的輸出型別中,如 JAR,WAR 或基於專案元資料的分發,而不需要在大多數情況下執行任何指令碼。
-
專案資訊的一致性站點− 使用與構建過程相同的元資料,Maven 能夠生成一個網站或PDF,包括您要新增的任何文件,並新增到關於專案開發狀態的標準報告中。
-
釋出管理和釋出單獨的輸出− Maven 將不需要額外的配置,就可以與原始碼管理系統(如 Subversion 或 Git)整合,並可以基於某個標籤管理專案的釋出。它也可以將其釋出到分發位置供其他專案使用。Maven 能夠釋出單獨的輸出,如 JAR,包含其他依賴和文件的歸檔,或者作為原始碼釋出。
-
向後相容性− 您可以很輕鬆的從舊版本 Maven 的多個模組移植到 Maven 3 中。
-
子專案使用父專案依賴時,正常情況子專案應該繼承父專案依賴,無需使用版本號,
-
並行構建− 編譯的速度能普遍提高20 - 50 %。
-
更好的錯誤報告− Maven 改進了錯誤報告,它為您提供了 Maven wiki 頁面的連結,您可以點選連結檢視錯誤的完整描述。
MAVEN需要安裝java並配置maven環境。
Maven POM
POM( Project Object Model,專案物件模型 ) 是 Maven 工程的基本工作單元,是一個XML檔案,包含了專案的基本資訊,用於描述專案如何構建,宣告專案依賴,等等。
執行任務或目標時,Maven 會在當前目錄中查詢 POM。它讀取 POM,獲取所需的配置資訊,然後執行目標。
POM 中可以指定以下配置:
- 專案依賴
- 外掛
- 執行目標
- 專案構建 profile
- 專案版本
- 專案開發者列表
- 相關郵件列表資訊
在建立 POM 之前,我們首先需要描述專案組 (groupId), 專案的唯一ID。
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 模型版本 --> <modelVersion>4.0.0</modelVersion> <!-- 公司或者組織的唯一標誌,並且配置時生成的路徑也是由此生成, 如com.companyname.project-group,maven會將該專案打成的jar包放本地路徑:/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- 專案的唯一ID,一個groupId下面可能多個專案,就是靠artifactId來區分的 --> <artifactId>project</artifactId> <!-- 版本號 --> <version>1.0</version> </project>
所有 POM 檔案都需要 project 元素和三個必需欄位:groupId,artifactId,version。