1. 程式人生 > >Maven介紹以及Maven安裝與環境變數配置

Maven介紹以及Maven安裝與環境變數配置

Preface

    Maven 是一個專案管理和整合工具。Maven為開發者提供了一套完整的構建生命週期框架。開發團隊幾乎不用花多少時間就能夠自動完成工程的基礎構建配置,因為Maven使用了一個標準的目錄結構和一個預設的構建生命週期。

 在有多個開發團隊環境的情況下,Maven能夠在很短的時間內使得每項工作都按照標準進行。因為大部分的工程配置操作都非常簡單並且可複用,在建立報告、檢查、構建和測試自動配置時,Maven可以讓開發者的工作變得更簡單。

 Maven 的主要目的是為開發者提供

  1. 一個可複用、可維護、更易理解的工程綜合模型
  2. 與這個模型互動的外掛或者工具
 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

1.Maven-環境配置

 Maven的執行依賴jdk,首先需要安裝好jdk。

1.1. Maven下載

1.2. 解壓Maven

 將下載好的Maven解壓到相應目錄,解壓後的目錄結構如下圖

1.3. 設定Maven環境變數

 新增 M2_HOMEM2MAVEN_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檔案。

  1. 所有的 POM 檔案需要project元素和三個必須的欄位:groupId, artifactId,version
  2. 在倉庫中的工程標識為 groupId:artifactId:version
  3.  POM.xml 的根元素是project,它有三個主要的子節點
groupId

這是工程組的標識。它在一個組織或者專案中通常是唯一的。例如,一個銀行組織 com.company.bank擁有所有的和銀行相關的專案。

artifactId

這是工程的標識。它通常是工程的名稱。例如,消費者銀行。groupId artifactId 一起定義了artifact在倉庫中的位置。

version

這是工程的版本號。在 artifact 的倉庫中,它用來區分不同的版本。例如:

com.company.bank:consumer-banking:1.0

2.2. 專案型別

  Maven專案的型別根據配置檔案中的Packaging決定.

  打包方式常見的有三種:

  1. jar:java專案<packaging>jar</packaging>
  2. war:web專案<packaging>war</packaging>
  3. 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

2.5. 新增依賴