maven

什么是maven?
Maven是apache旗下的一個(gè)開源項(xiàng)目,是一款用于管理和構(gòu)建java項(xiàng)目的工具。

Apache 軟件基金會(huì),成立于1999年7月,是目前世界上最大的最受歡迎的開源軟件基金會(huì),也是一個(gè)專門為支持開源項(xiàng)目而生的非盈利性組織。
開源項(xiàng)目:https://www.apache.org/index.html#projects-list

Maven的作用?


介紹:
Apache Maven 是一個(gè)項(xiàng)目管理和構(gòu)建工具,它基于項(xiàng)目對(duì)象模型(POM)的概念,通過一小段描述信息來管理項(xiàng)目的構(gòu)建。
作用:?
方便的依賴管理
統(tǒng)一的項(xiàng)目結(jié)構(gòu)
標(biāo)準(zhǔn)的項(xiàng)目構(gòu)建流程
官網(wǎng):http://maven.apache.org/


倉庫:用于存儲(chǔ)資源,管理各種jar包。
本地倉庫:自己計(jì)算機(jī)上的一個(gè)目錄。
中央倉庫:由Maven團(tuán)隊(duì)維護(hù)的全球唯一的。 倉庫地址:https://repo1.maven.org/maven2/
遠(yuǎn)程倉庫(私服):一般由公司團(tuán)隊(duì)搭建的私有倉庫。

安裝步驟
先準(zhǔn)備安裝包

1.解壓 apache-maven-3.6.1-bin.zip 。
2.配置本地倉庫:修改 conf/settings.xml 中的 <localRepository> 為一個(gè)指定目錄。
3.配置阿里云私服:修改 conf/settings.xml 中的 <mirrors>標(biāo)簽,為其添加如下子標(biāo)簽:
4.配置環(huán)境變量: MAVEN_HOME 為maven的解壓目錄,并將其bin目錄加入PATH環(huán)境變量。
5.測(cè)試:打開cmd輸入mvn -v

IDEA集成Maven
配置Maven環(huán)境(全局)
第一步:

第二步:

第三步:

maven home path: 填寫自己下載好的maven的位置
user setting file :是用來配置去哪下載依賴的jar包的settings.xml文件
Local repository: 是下載的jar包存放的本地倉庫路徑
第四步:

第五步:


IDEA 創(chuàng)建 Maven 項(xiàng)目
創(chuàng)建模塊,選擇Maven
填寫模塊名稱,坐標(biāo)信息,點(diǎn)擊finish,創(chuàng)建完成
編寫 HelloWorld,并運(yùn)行



Maven坐標(biāo)
什么是坐標(biāo)?
Maven 中的坐標(biāo)是資源的唯一標(biāo)識(shí),通過該坐標(biāo)可以唯一定位資源位置。
使用坐標(biāo)來定義項(xiàng)目或引入項(xiàng)目中需要的依賴。
Maven 坐標(biāo)主要組成
groupId:定義當(dāng)前Maven項(xiàng)目隸屬組織名稱(通常是域名反寫,例如:com.zhe)
artifactId:定義當(dāng)前Maven項(xiàng)目名稱(通常是模塊名稱,例如 order-service、goods-service)
version:定義當(dāng)前項(xiàng)目版本號(hào)

IDEA 導(dǎo)入 Maven 項(xiàng)目
打開IDEA,選擇右側(cè)Maven面板,點(diǎn)擊 + 號(hào),選中對(duì)應(yīng)項(xiàng)目的pom.xml文件,雙擊即可。

依賴管理
依賴配置
依賴:指當(dāng)前項(xiàng)目運(yùn)行所需要的jar包,一個(gè)項(xiàng)目中可以引入多個(gè)依賴。
配置:
在 pom.xml 中編寫 <dependencies> 標(biāo)簽
在 <dependencies> 標(biāo)簽中 使用 <dependency> 引入坐標(biāo)
定義坐標(biāo)的 groupId,artifactId,version
點(diǎn)擊刷新按鈕,引入最新加入的坐標(biāo)

注意事項(xiàng)
如果引入的依賴,在本地倉庫不存在,將會(huì)連接遠(yuǎn)程倉庫/中央倉庫,然后下載依賴。(這個(gè)過程會(huì)比較耗時(shí),耐心等待)
如果不知道依賴的坐標(biāo)信息,可以到 https://mvnrepository.com 中搜索

依賴傳遞
依賴具有傳遞性
直接依賴:在當(dāng)前項(xiàng)目中通過依賴配置建立的依賴關(guān)系
間接依賴:被依賴的資源如果依賴其他資源,當(dāng)前項(xiàng)目間接依賴其他資源

排除依賴
排除依賴指主動(dòng)斷開依賴的資源,被排除的資源無需指定版本。

依賴范圍
依賴的jar包,默認(rèn)情況下,可以在任何地方使用。可以通過 <scope>…</ scope > 設(shè)置其作用范圍。
作用范圍:
主程序范圍有效。(main文件夾范圍內(nèi))
測(cè)試程序范圍有效。(test文件夾范圍內(nèi))
是否參與打包運(yùn)行。(package指令范圍內(nèi))



生命周期
Maven的生命周期就是為了對(duì)所有的maven項(xiàng)目構(gòu)建過程進(jìn)行抽象和統(tǒng)一。

Maven中有3套相互獨(dú)立的生命周期:
clean:清理工作。
default:核心工作,如:編譯、測(cè)試、打包、安裝、部署等。
site:生成報(bào)告、發(fā)布站點(diǎn)等。
每套生命周期包含一些階段(phase),階段是有順序的,后面的階段依賴于前面的階段。

生命周期階段
clean:移除上一次構(gòu)建生成的文件
compile:編譯項(xiàng)目源代碼
test:使用合適的單元測(cè)試框架運(yùn)行測(cè)試(junit)
package:將編譯后的文件打包,如:jar、war等
install:安裝項(xiàng)目到本地倉庫

注意事項(xiàng):
在同一套生命周期中,當(dāng)運(yùn)行后面的階段時(shí),前面的階段都會(huì)運(yùn)行。

執(zhí)行指定生命周期的兩種方式:
在idea中,右側(cè)的maven工具欄,選中對(duì)應(yīng)的生命周期,雙擊執(zhí)行。

在命令行中,通過命令執(zhí)行。
? mvn clean
? mvn compile
? mvn package
? mvn test

小結(jié)
maven生命周期
clean:清理
compile:編譯
test:測(cè)試
package:打包
install:安裝