Maven介紹以及Maven安裝與環境變數配置
Preface
Maven 是一個專案管理和整合工具。Maven為開發者提供了一套完整的構建生命週期框架。開發團隊幾乎不用花多少時間就能夠自動完成工程的基礎構建配置,因為Maven使用了一個標準的目錄結構和一個預設的構建生命週期。
在有多個開發團隊環境的情況下,Maven能夠在很短的時間內使得每項工作都按照標準進行。因為大部分的工程配置操作都非常簡單並且可複用,在建立報告、檢查、構建和測試自動配置時,Maven可以讓開發者的工作變得更簡單。
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 |
1.Maven-環境配置
Maven的執行依賴jdk,首先需要安裝好jdk。1.1. Maven下載
1.2. 解壓Maven
將下載好的Maven解壓到相應目錄,解壓後的目錄結構如下圖
1.3. 設定Maven環境變數
新增 M2_HOME、M2、MAVEN_OPTS
M2_HOME= D:\Program Files\apache-maven-3.3.9
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m -Xmx512m
新增字串 “;%M2%” 到系統“Path”變數末尾
1.4. 驗證Maven安裝
開啟控制檯,輸入 mvn --version,出現下圖即安裝成功。2. Maven使用
每一個Maven專案都有一個pom.xml的配置檔案.通過pom.xml可以配置專案的依賴,專案的打包方式等.
2.1. pom舉例
每個工程應該只有一個 POM檔案。
- 所有的 POM 檔案需要project元素和三個必須的欄位:groupId, artifactId,version。
- 在倉庫中的工程標識為 groupId:artifactId:version
- POM.xml 的根元素是project,它有三個主要的子節點
groupId |
這是工程組的標識。它在一個組織或者專案中通常是唯一的。例如,一個銀行組織 com.company.bank擁有所有的和銀行相關的專案。 |
artifactId |
這是工程的標識。它通常是工程的名稱。例如,消費者銀行。groupId 和 artifactId 一起定義了artifact在倉庫中的位置。 |
version |
這是工程的版本號。在 artifact 的倉庫中,它用來區分不同的版本。例如: com.company.bank:consumer-banking:1.0 |
2.2. 專案型別
Maven專案的型別根據配置檔案中的Packaging決定.
打包方式常見的有三種:
- jar:java專案<packaging>jar</packaging>
- war:web專案<packaging>war</packaging>
- pom:parent專案<packaging>pom</packaging>
2.3. Maven的標準目錄結構
在構建maven專案時需要遵循標準的目錄結構.
一般情況下:所有的原始碼都放在java目錄下,所有的資原始檔或者配置檔案放置在resources目錄下.
2.4. Maven的生命週期
在Maven2中有了明確的生命週期概念,而且都提供與之對應的命令,使得專案構建更加清晰明瞭。主要的生命週期階段:
- validate,驗證工程是否正確,所有需要的資源是否可用。
- compile,編譯專案的原始碼。
- test-compile,編譯專案測試程式碼。
-
test,使用已編譯的測試程式碼,測試已編譯的原始碼。
-
package,已釋出的格式,如jar,將已編譯的原始碼打包。
-
integration-test,在整合測試可以執行的環境中處理和釋出包。
- verify,執行任何檢查,驗證包是否有效且達到質量標準。
- install,把包安裝在本地的repository中,可以被其他工程作為依賴來使用
- deploy,在整合或者釋出環境下執行,將最終版本的包拷貝到遠端的repository,使得其他的開發者或者工程可以共享。
- generate-sources,產生應用需要的任何額外的原始碼,如xdoclet。
如果要執行專案編譯,那麼直接輸入:mvn compile即可,對於其他的階段可以類推。階段之間是存在依賴關係(dependency)的,如test依賴test-compile。在執行mvn test時,會先執行mvn test-compile,然後才是mvn test。