柚子快報激活碼778899分享:java Maven
柚子快報激活碼778899分享:java Maven
什么是Maven
定義:Maven是一個項目管理工具.基于POM(項目對象模型)的概念,Maven可以通過一小段描述信息來管理項目的構(gòu)建,報告和文檔的項目管理工具軟件.
大白話:Maven是一個項目管理工具,通過pom.xml文件的配置獲取jar包.
為什么要學(xué)Maven
一句話:簡單,方便,提高我們的開發(fā)效率,減小我們的開發(fā)BUG.
Maven提供的功能非常多,這里終點講兩個方面:1.項目構(gòu)建 2.管理依賴
Maven核心功能
項目構(gòu)建
Maven提供了標準的,跨平臺的自動化項目構(gòu)建方式.
當我們開發(fā)了一個項目之后,代碼需要經(jīng)過編譯,測試,打包,發(fā)布等過程,每次代碼的修改,都需要經(jīng)過這些流程,如果代碼反復(fù)調(diào)試修改,這個流程就需要反復(fù)進行,就顯得特別麻煩,而Maven給我們提供了一套簡單的命令來完成項目的構(gòu)建.
形如這些就是Maven提供的命令,在idea左上角點擊maven可以找到.
比如:package命令就是項目的打包操作.(打包就是把所有class文件,全部放一起,打成jar包或war包)
?jar包和war包都是一種壓縮文件
jar包就是把開發(fā)人員寫好的一些代碼進行打包.打好的jar包就可以引入到其它項目中,也可以直接使用這些jar包中的類和屬性.另外也可以打成可執(zhí)行jar包,這樣的包就可以通過java-jar命令執(zhí)行.
war包可以理解為是一個web項目,里面是項目的所有東西,通常用于網(wǎng)站.
依賴管理
上面說到,Mave是一個項目管理工具,通過pom.xml文件的配置獲取jar包,而不是手動添加jar包,獲取的jar包,其實就是依賴.
pom.xml就是maven的配置文件, 用以描述項目的各種信息.?
依賴配置
依賴:指當前項目運行所需要的jar包.
如果使用Maven,我們只需要在pom.xml中引入mysql-connector-java依賴就可以了
1.在pom文件
2.點擊刷新按鈕,引入新加入的依賴jar包.
后續(xù)添加新的jar包,或者修改jar包版本,都是通過該方式在項目中添加依賴.?
?
依賴傳遞
?早期沒有maven時,向項目中添加依賴的jar包,需要把所有的jar包都復(fù)制到項目工程下.
比如A依賴B,B依賴C,那么A項目引入B的同時,也需要引入C,如果我們手動管理這個依賴,這個過程就會比較麻煩,我們需要知道每個庫都依賴于哪些庫,以及這些依賴之間的版本是如何關(guān)聯(lián)的.
比如我們要吃火鍋,需要有鍋,有調(diào)料,有食材,以及確認什么樣的鍋,什么樣的食材.
但使用maven的話,就可以避免管理所需的依賴關(guān)系.我們只需要在pom文件中,定義直接依賴就可以了,由于maven的依賴具有傳遞性,所以會自動把所依賴的其它jar包也一起導(dǎo)入.
比如吃火鍋,現(xiàn)在可以直接點一個外賣,直接就把所有食材都送過來了,包括什么鍋,配什么菜.?
?
如上圖,項目A通過Maven引入Jar A時,會自動引入Jar B和Jar C.
Jar A和項目B就是項目A的直接依賴, Jar B和Jar C是間接依賴.
直接依賴:在當前項目中通過依賴配置建立的依賴關(guān)系.
間接依賴:被依賴的資源如果依賴其它資源,當前項目間接依賴其它資源.?
依賴排除
當前階段我們需要依賴的庫并不多,但隨著項目越來越復(fù)雜,庫之間的依賴關(guān)系也會變得更復(fù)雜.如上圖中,如果項目A不需要Jar B,也可以通過排除依賴的方式來實現(xiàn).
排除依賴:指主動斷開依賴的資源.(被排除的資源無需指定版本).?
maven還有一些功能是依賴調(diào)解,可選依賴等.
依賴調(diào)解:
當項目中的依賴存在依賴沖突時(比如上圖,Jar C一個版本是1.0,另一個版本是2.0,兩個版本不一致可能會引起沖突),例如存在這樣的依賴:
A->B->C->X(1.0)
A->D->X(2.0)
Maven會采用最短路徑優(yōu)先的原則去選擇依賴,這里的2路徑更短,所以我們會選擇X(2.0),當然我們也可以選擇指定某個依賴的版本.
當然也可以指定X的版本.?
?Maven倉庫
我們通過短短幾行代碼,就把依賴jar包放在了項目里,具體是如何做的呢?
這個代碼,我們稱之為"坐標",也就是唯一的.
在Maven中,根據(jù)groupId,artifactId,version的配置,來唯一識別一個jar包,缺一不可.
當我們在pom文件中配置完依賴之后,點擊刷新,Maven會根據(jù)坐標的配置,去倉庫里尋找jar包,并把它下載下來,添加到項目中.這個Jar包下載的地方就叫倉庫.
倉庫:用于存儲資源,管理各種jar包.
Maven倉庫的本質(zhì)就是一個目錄(文件夾),這個目錄被用來存儲開發(fā)中的所有依賴(jar包,插件等).?
倉庫分為兩大類:本地倉庫和遠程倉庫.其中遠程倉庫又分為中央倉庫,私服和其它倉庫.
本地倉庫
本地倉庫:自己計算機上的一個目錄(用來存儲jar包).
當項目中引入對應(yīng)依賴的jar包后,首先會查找本地倉庫中是否有對應(yīng)的jar包.
如果有,則在項目中直接引用.
如果沒有,則去中央倉庫中下載對應(yīng)的jar包到本地倉庫.
中央倉庫
中央倉庫:maven軟件中內(nèi)置一個遠程倉庫地址,就是中央倉庫,服務(wù)于整個互聯(lián)網(wǎng).由maven團隊維護,全球唯一.
倉庫地址:https://repo1.maven.org/maven2/ ?
我們可以把自己寫好的Jar包上傳到中央倉庫(具備一定的要求) ,也可以從中央倉庫中下載jar包.
私有服務(wù)器(私服)?
?私服:一般由公司團隊搭建的私有倉庫.
私服屬于某個公司,或者某個部門,往往需要一定的權(quán)限.
有了私服之后,Maven依賴下載的順序又發(fā)生了變化.
當Maven需要下載資源時
1.先從本地倉庫獲取,本地倉庫存在,則直接返回
2.如果本地倉庫中沒有,就從私服請求,私服存在該資源,就直接返回了
3.如果私服上不存在該資源,則從中央倉庫下載,中央倉庫不存在,就報錯了.
4.如果中央倉庫中存在,就先緩存在私服上之后,再緩存到本地倉庫里,再為Maven的下載請求提供服務(wù).?
私服是很多人在使用的,所以只需要第一個使用者下載一次就可以了.?
柚子快報激活碼778899分享:java Maven
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。