一篇小短文讓你瞭解Maven

簡介

Apache Maven是一個項目管理及構建工具,主要用於Java項目的構建,Maven還可以用於構建和管理以C#,Ruby,Scala和其他語言編寫的項目。

Maven解決了構建軟件那幾方面問題:

  • 編譯構建

傳統的項目沒有使用Maven大部分情況是由IDE對編寫代碼進行自動編譯,將JAVA文件編譯成CLASS之後,由研發對bin目錄下的CLASS進行打包部署。而Maven通過插件進行構建,並自動打包成Jar或者war包。讓編譯構建的工作可以很好的在持續集成的過程中交給工具去完成。

  • 依賴獲取

通過Pom和settings的配置,到中央倉庫進行依賴軟件包的獲取,摒棄原來把依賴包打入源碼項目中,減少源項目的大小,讓提升開發人員拉取代碼效率,並且可以通過中央倉庫對依賴進行統一管理,減少存儲空間浪費。

  • 模塊管理

可以通過繼承,分層等方式管理項目的模塊,讓代碼拆分更清晰。

Maven的安裝

Maven運行依賴於Java環境,所以需要安裝Java運行環境JDK。

Maven下載地址

http://maven.apache.org/download.cgi

  • Windows

右鍵 “此電腦” 選擇 "屬性",之後點擊 "高級系統設置",點擊"環境變量",來設置環境變量,有以下系統變量需要配置:

新建系統變量 MAVEN_HOME,變量值 例如:E:\\Maven\\apache-maven-3.6.3

編輯系統變量 Path,添加變量值:;%MAVEN_HOME%\\bin

  • Linux & MacOS

sudo vim /etc/profile

export MAVEN_HOME=/usr/local/apache-maven-3.6.3

export PATH=${PATH}:${MAVEN_HOME}/bin

source /etc/profile

settings.xml 文件配置

  • 本地倉庫 LocalRepository

默認值:<localrepository>${user.home}/.m2/repository/<localrepository>

不管Linux還是 Windows,每個用戶在自己的用戶目錄下都有一個路徑名為 .m2/respository/ 的倉庫目錄

  • 中央倉庫 mirrors

Maven 中央倉庫是由 Maven 社區提供的倉庫。

  • 遠程倉庫 Repositories

自建的私服或者其他遠程倉庫等

  • 倉庫認證 Server

定義遠程倉庫的認證信息

pom.xml項目文件配置

POM(Project Object Model)用於描述項目如何構建,聲明項目依賴等等。執行任務或目標時,Maven 會在當前目錄中查找 POM。它讀取 POM,獲取所需的配置信息,然後執行目標。

所有 POM 文件主要配置內容

groupId

組織標識。它在一個組織或者項目中通常是唯一的。例如,JFrog 軟件包 com.jfrog

artifactId

製品標識。它通常是工程的名稱。例如,JFrog 的Artifactory,artifactory。groupId 和 artifactId 一起定義了 artifact 在倉庫中的位置。

version

版本號。在 artifact 的倉庫中,它用來區分不同的版本,比如1.0或者1.0-SNAPSHOT

classifier

製品包JDK版本,也就是編譯器版本

以上四個標籤構成了Maven的管理包的座標體系也就是我們常說的GAVC

distributionManagement

部署上傳。定義上傳的遠程倉庫

parent

繼承。定義項目間繼承關係

dependency

項目依賴。添加依賴通過GAVC

build

構建。項目的目錄結構和構建插件管理等

Maven依賴搜索順序

當我們執行 Maven 構建命令時,Maven 開始按照以下順序查找依賴的庫:

步驟 1 - 在本地倉庫中搜索,如果找不到,執行步驟 2,如果找到了則執行其他操作。

步驟 2 - 在中央倉庫中搜索,如果找不到,並且有一個或多個遠程倉庫已經設置,則執行步驟 4,如果找到了則下載到本地倉庫中以備將來引用。

步驟 3

- 如果遠程倉庫沒有被設置,Maven 將簡單的停滯處理並拋出錯誤(無法找到依賴的文件)。

步驟 4 - 在一個或多個遠程倉庫中搜索依賴的文件,如果找到則下載到本地倉庫以備將來引用,否則 Maven 將停止處理並拋出錯誤(無法找到依賴的文件)。

一篇小短文讓你瞭解Maven

Maven構建生命週期

標準生命週期

clean:項目清理的處理

default:項目部署的處理

site:項目站點文檔創建的處理

default週期中的幾個階段

一篇小短文讓你瞭解Maven

Maven常用命令

mvn clean

#清理命令 清理項目生產的臨時文件,一般是模塊下的target目錄

mvn compile

#編譯命令 編譯源代碼

mvn test

#測試命令 或執行src/test/java/下junit的測試用例

mvn package

#打包命令 項目打包工具,會在模塊下的target目錄生成jar或war等文件

mvn install

#安裝命令 生成Pom供,並將jar和Pom文件安裝到本地倉庫,其他模塊使用 -Dmaven.test.skip=true跳過測試(同時會跳過test compile)

mvn deploy

#發佈命令 將打包的文件發佈到遠程參考,提供其他人員進行下載依賴 ,一般是發佈到公司的私服


更多精彩內容可以專注我們的在線課堂


分享到:


相關文章: