新聞中心
簡介
Apache Maven是一個(gè)項(xiàng)目管理及構(gòu)建工具,主要用于Java項(xiàng)目的構(gòu)建,Maven還可以用于構(gòu)建和管理以C#,Ruby,Scala和其他語言編寫的項(xiàng)目。
Maven解決了構(gòu)建軟件那幾方面問題:
- 編譯構(gòu)建
傳統(tǒng)的項(xiàng)目沒有使用Maven大部分情況是由IDE對(duì)編寫代碼進(jìn)行自動(dòng)編譯,將JAVA文件編譯成CLASS之后,由研發(fā)對(duì)bin目錄下的CLASS進(jìn)行打包部署。而Maven通過插件進(jìn)行構(gòu)建,并自動(dòng)打包成Jar或者war包。讓編譯構(gòu)建的工作可以很好的在持續(xù)集成的過程中交給工具去完成。
- 依賴獲取
通過Pom和settings的配置,到中央倉庫進(jìn)行依賴軟件包的獲取,摒棄原來把依賴包打入源碼項(xiàng)目中,減少源項(xiàng)目的大小,讓提升開發(fā)人員拉取代碼效率,并且可以通過中央倉庫對(duì)依賴進(jìn)行統(tǒng)一管理,減少存儲(chǔ)空間浪費(fèi)。
- 模塊管理
可以通過繼承,分層等方式管理項(xiàng)目的模塊,讓代碼拆分更清晰。
Maven的安裝
Maven運(yùn)行依賴于Java環(huán)境,所以需要安裝Java運(yùn)行環(huán)境JDK。
Maven下載地址
http :// maven.apache.org/download.cgi
- Windows
右鍵 “此電腦” 選擇 "屬性",之后點(diǎn)擊 "高級(jí)系統(tǒng)設(shè)置",點(diǎn)擊"環(huán)境變量",來設(shè)置環(huán)境變量,有以下系統(tǒng)變量需要配置:
新建系統(tǒng)變量 MAVEN_HOME,變量值 例如:E:\Maven\apache-maven-3.6.3
編輯系統(tǒng)變量 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
默認(rèn)值:
不管Linux還是 Windows,每個(gè)用戶在自己的用戶目錄下都有一個(gè)路徑名為 .m2/respository/ 的倉庫目錄
- 中央倉庫 mirrors
Maven 中央倉庫是由 Maven 社區(qū)提供的倉庫。
- 遠(yuǎn)程倉庫 Repositories
自建的游戲或者其他遠(yuǎn)程倉庫等
- 倉庫認(rèn)證 Server
定義遠(yuǎn)程倉庫的認(rèn)證信息
pom.xml項(xiàng)目文件配置
POM(Project Object Model)用于描述項(xiàng)目如何構(gòu)建,聲明項(xiàng)目依賴等等。執(zhí)行任務(wù)或目標(biāo)時(shí),Maven 會(huì)在當(dāng)前目錄中查找 POM。它讀取 POM,獲取所需的配置信息,然后執(zhí)行目標(biāo)。
所有 POM 文件主要配置內(nèi)容
groupId
組織標(biāo)識(shí)。它在一個(gè)組織或者項(xiàng)目中通常是唯一的。例如,JFrog 軟件包 com.jfrog
artifactId
制品標(biāo)識(shí)。它通常是工程的名稱。例如,JFrog 的Artifactory,artifactory。groupId 和 artifactId 一起定義了 artifact 在倉庫中的位置。
version
版本號(hào)。在 artifact 的倉庫中,它用來區(qū)分不同的版本,比如1.0或者1.0-SNAPSHOT
classifier
制品包JDK版本,也就是編譯器版本
以上四個(gè)標(biāo)簽構(gòu)成了Maven的管理包的坐標(biāo)體系也就是我們常說的GAVC
distributionManagement
部署上傳。定義上傳的遠(yuǎn)程倉庫
parent
繼承。定義項(xiàng)目間繼承關(guān)系
dependency
項(xiàng)目依賴。添加依賴通過GAVC
build
構(gòu)建。項(xiàng)目的目錄結(jié)構(gòu)和構(gòu)建插件管理等
Maven依賴搜索順序
當(dāng)我們執(zhí)行 Maven 構(gòu)建命令時(shí),Maven 開始按照以下順序查找依賴的庫:
步驟 1- 在本地倉庫中搜索,如果找不到,執(zhí)行步驟 2,如果找到了則執(zhí)行其他操作。
步驟 2- 在中央倉庫中搜索,如果找不到,并且有一個(gè)或多個(gè)遠(yuǎn)程倉庫已經(jīng)設(shè)置,則執(zhí)行步驟 4,如果找到了則下載到本地倉庫中以備將來引用。
步驟 3 - 如果遠(yuǎn)程倉庫沒有被設(shè)置,Maven 將簡單的停滯處理并拋出錯(cuò)誤(無法找到依賴的文件)。
步驟 4- 在一個(gè)或多個(gè)遠(yuǎn)程倉庫中搜索依賴的文件,如果找到則下載到本地倉庫以備將來引用,否則 Maven 將停止處理并拋出錯(cuò)誤(無法找到依賴的文件)。
Maven構(gòu)建生命周期
標(biāo)準(zhǔn)生命周期
clean:項(xiàng)目清理的處理
default:項(xiàng)目部署的處理
site:項(xiàng)目站點(diǎn)文檔創(chuàng)建的處理
default周期中的幾個(gè)階段
Maven常用命令
mvn clean
#清理命令 清理項(xiàng)目生產(chǎn)的臨時(shí)文件,一般是模塊下的target目錄
mvn compile
#編譯命令 編譯源代碼
mvn test
#測試命令 或執(zhí)行src/test/java/下junit的測試用例
mvn package
#打包命令 項(xiàng)目打包工具,會(huì)在模塊下的target目錄生成jar或war等文件
mvn install
#安裝命令 生成Pom供,并將jar和Pom文件安裝到本地倉庫,其他模塊使用 -Dmaven.test.skip=true跳過測試(同時(shí)會(huì)跳過test compile)
mvn deploy
#發(fā)布命令 將打包的文件發(fā)布到遠(yuǎn)程參考,提供其他人員進(jìn)行下載依賴 ,一般是發(fā)布到公司的游戲
更多精彩內(nèi)容可以專注我們的在線課堂
微信搜索公眾號(hào):jfrogchina 獲取課程通知
網(wǎng)站題目:一篇小短文讓你了解Maven-創(chuàng)新互聯(lián)
URL鏈接:http://www.dlmjj.cn/article/gpdhj.html