柚子快報(bào)激活碼778899分享:java Maven
柚子快報(bào)激活碼778899分享:java Maven
目錄
一、什么是Maven
二、為什么要學(xué)Maven
三、創(chuàng)建一個(gè)Maven項(xiàng)目
四、Maven 核心功能
1、項(xiàng)目構(gòu)建
2、依賴管理
(1)依賴配置
(2)依賴傳遞
(3)依賴排除
3、Maven Help 插件
五、Maven 倉庫
(1)倉庫的介紹
(2)本地倉庫
(3)中央倉庫
如何查找 Jar 的坐標(biāo)?
(4)私有服務(wù)器
六、Maven 設(shè)置國內(nèi)源
1、配置當(dāng)前項(xiàng)目的setting:
配置國內(nèi)源
2、設(shè)置新項(xiàng)目的setting:
????????學(xué)習(xí)這一部分要先檢查IDEA版本,社區(qū)辦要求 2021.1~2022.1.4,專業(yè)版則無要求。如果個(gè)人電腦不是專業(yè)版,版本又不在這個(gè)范圍,需要卸載重新安裝。
? ? ? ? IDEA卸載參考:IDEA卸載和刪除注冊(cè)表_idea清理注冊(cè)表-CSDN博客(一定要?jiǎng)h除注冊(cè)表)
一、什么是Maven
? ? ? ? 官網(wǎng)對(duì)Maven的描述:
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
? ? ? ? 翻譯過來就是:
Maven是一個(gè)項(xiàng)目管理工具?;?POM (Project Object Model,項(xiàng)目對(duì)象模型)的概念,Maven 可以通過一小段描述信息來管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的項(xiàng)目管理工具軟件。
? ? ? ? 大白話:
Maven是一個(gè)項(xiàng)目管理工具,通過 pom.xml文件的配置獲取jar包,而不用手動(dòng)去添加 jar包。
二、為什么要學(xué)Maven
? ? ? ? 一句話:簡(jiǎn)單、方便,能提高我們的開發(fā)效率,減少我們的開發(fā)BUG。
? ? ? ? Maven提供的功能非常多,下面的體現(xiàn)主要是以下兩個(gè)方面:1、項(xiàng)目構(gòu)建? ? ?2、管理依賴。
三、創(chuàng)建一個(gè)Maven項(xiàng)目
? ? ? ? IDEA本身已經(jīng)集成了Maven,不需要我們另外單獨(dú)安裝,可以在IDEA上直接用,不用安裝。
? ? ? ? 下面是用專業(yè)版2023.2演示:打開IDEA -> file -> New Project,如圖:
?????????
? ? ? ? 點(diǎn)擊create,就創(chuàng)建好了一個(gè)Maven項(xiàng)目,還會(huì)自動(dòng)生成一個(gè)pom.xml文件,如圖:
四、Maven 核心功能
????????接下來,我們結(jié)合項(xiàng)目,介紹 Maven 在項(xiàng)目開發(fā)中的作用。主要體現(xiàn)在:1、項(xiàng)目構(gòu)建? ? ?2、管理依賴。
1、項(xiàng)目構(gòu)建
? ? ? ? Maven 提供了標(biāo)準(zhǔn)的、跨平臺(tái)(Linux,Windows,MacOS等)的自動(dòng)化項(xiàng)目構(gòu)建方式。
????????當(dāng)我們開發(fā)一個(gè)項(xiàng)目之后,代碼需要經(jīng)過編譯、測(cè)試、打包、發(fā)布等流程,每次代碼的修改,都需要經(jīng)過這些流程,如果代碼反復(fù)調(diào)試修改,這個(gè)流程就需要反復(fù)進(jìn)行,就顯得非常麻煩,而 Maven 給我們提供了一套簡(jiǎn)單的命令來完成項(xiàng)目的構(gòu)建。
? ? ? ? 下面寫一些簡(jiǎn)單的Java代碼:
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println("hello world");
}
}
}
? ? ? ? 如圖:
????????
? ? ? ? 左鍵雙擊package,就可以把我們剛才寫的代碼,打成 jar 包,如圖:
? ? ? ? 打包就是把所有的 class 文件,全部都放在一起,打成 jar包 或者 war包
jar包 和 war包 都是一種壓縮文件。
????????jar包 就是把開發(fā)人員已經(jīng)寫好的一些代碼進(jìn)行打包。打好的 jar包 就可以引入到其他項(xiàng)目中,也可以直接使用這些 jar包 中的類和屬性。另外也可以打成可執(zhí)行的 jar包,這樣的包就可以通過 java -jar 命令來執(zhí)行。
????????war包 可以理解為是一個(gè)web項(xiàng)目,里面是項(xiàng)目的所有東西,通常用于網(wǎng)站。
2、依賴管理
? ? ? ? 上面說到,Maven 是一個(gè)項(xiàng)目管理工具,通過 pom.xml 文件的配置獲取 jar包,而不用手動(dòng)去添加 jar包。獲取的 jar包,其實(shí)就是依賴。
(1)依賴配置
? ? ? ? 依賴:指當(dāng)前項(xiàng)目運(yùn)行所需要的 jar包。
? ? ? ? 比如之前學(xué)習(xí) JDBC 時(shí),我們需要手動(dòng)下載 mysql-connector-java 的包,并且要手動(dòng)添加到項(xiàng)目中。而使用Maven,只需要在 pom.xml 中引入 mysql-connector-java 的依賴就好了。
? ? ? ? 格式:
? ? ? ?
? ? ? ? 1、在pom.xml文件內(nèi)寫入下面代碼:
? ? ? ? 2、點(diǎn)擊刷新按鈕,引入新加入的依賴 jar包。(后續(xù)有添加新的 jar包,或者修改 jar包 版本,都需要通過上述方式在項(xiàng)目中添加依賴)
? ? ? ? 刷新按鈕的點(diǎn)擊,有下面兩種方式:
? ? ? ? 3、刷新完成后,在左邊這里的目錄下就有對(duì)應(yīng)的jar包了,如圖:
(2)依賴傳遞
? ? ? ? 早期沒有使用Maven時(shí),向項(xiàng)目中添加依賴的 jar包,需要把所有的 jar包 都復(fù)制到項(xiàng)目工程下。比如 A 依賴 B,B 依賴 C,那么A項(xiàng)目引入B的同時(shí),也需要引入C,如果我們手動(dòng)管理這個(gè)依賴,這個(gè)過程就會(huì)比較麻煩,我們需要知道每個(gè)庫都依賴哪些庫,以及這些依賴之間的版本是如何關(guān)聯(lián)的。
比如我們要吃火鍋,需要有鍋,有調(diào)料,有食材,以及確認(rèn)什么樣的鍋,什么樣的食材。
比如去醫(yī)院看病,需要帶上以往的病例,檢查結(jié)果,處方等,并且要確認(rèn)帶的資料是正確的。如果日期錯(cuò)了,或者患者錯(cuò)了,少帶了,就需要回去重拿。
? ? ? ? 但使用Maven的話,就可以避免管理所需依賴的關(guān)系。我們只需要在pom文件中,定義直接依賴就可以了,由于Maven的依賴具有傳遞性,所以會(huì)自動(dòng)把所依賴的其他jar包也一起導(dǎo)入。
比如吃火鍋,現(xiàn)在可以點(diǎn)一個(gè)海底撈外賣,就直接把所有食材都送過來了,包括什么鍋,什么配菜,調(diào)料等等。
比如去醫(yī)院看病,現(xiàn)在可以借助“互聯(lián)網(wǎng)”,實(shí)現(xiàn)了信息共享,只需要帶上身份證,以往的病例和檢查結(jié)果就都可以看到了。
? ? ? ? 如圖:
? ? ? ? 項(xiàng)目A通過 Maven 引入 Jar A 時(shí),就會(huì)自動(dòng)引入 Jar B 和 Jar C。
? ? ? ? Jar A 和 項(xiàng)目B 就是 項(xiàng)目A 的直接依賴。Jar B,Jar C是間接依賴。
直接依賴:在當(dāng)前項(xiàng)目中 通過依賴配置建立的依賴關(guān)系。
間接依賴:被依賴的資源 如果依賴其他資源,當(dāng)前項(xiàng)目間接依賴其他資源。
(3)依賴排除
? ? ? ? 排除依賴:指主動(dòng)斷開依賴的資源。(被排除的資源無需指定版本)
? ? ? ? 當(dāng)前階段我們需要依賴的庫并不多,但隨著項(xiàng)目的越來越來復(fù)雜,庫之間的依賴關(guān)系也會(huì)變得越來越復(fù)雜。像上面圖中,如果項(xiàng)目A不需要 Jar B,也可以通過排除依賴的方式來實(shí)現(xiàn)。
比如我要寄件,在網(wǎng)上下單了,默認(rèn)會(huì)有一個(gè)服務(wù):快遞小哥會(huì)上門取件,幫我寄出去;但這時(shí)我剛好要出門,也順路經(jīng)過站點(diǎn),也可以選擇自己送過去。
? ? ? ? 代碼示例:
? ? ? ? Maven還有一些功能,是依賴調(diào)解,可選依賴等。
當(dāng)項(xiàng)目中的依賴存在依賴沖突,例如存在這樣的依賴:
? ? ? ? A->B->C->X(1.0)
? ? ? ? A->D->X(2.0)
Maven會(huì)采用最短路徑優(yōu)先的原則去選擇依賴,這里2的依賴路徑更短,所以會(huì)選擇X(2.0),當(dāng)然也可以指定某個(gè)依賴的般般,指定X(1.0)。
3、Maven Help 插件
? ? ? ? 安裝插件過程:File -> Setting -> Plugins -> 搜索 “Maven Help” -> 找到對(duì)應(yīng)插件,點(diǎn)擊 Install 安裝即可,按照后要重啟 IDEA,才能生效。如下圖:
?
? ? ? ? 點(diǎn)擊 Install 后,下載完后就如下圖:
? ? ? ? 點(diǎn)擊 Restart IDE,重啟IDEA。
? ? ? ? 安裝完后,打開 pom.xml 文件,就可以看到 Jar包 之間的依賴關(guān)系,如圖:
????????
? ? ? ? 也可以右鍵排除掉一些依賴,如圖:
????????
? ? ? ? 點(diǎn)擊后,就會(huì)沒了,如圖:
????????
五、Maven 倉庫
(1)倉庫的介紹
? ? ? ? 我們通過短短幾行代碼,就可以把依賴 jar包 放在項(xiàng)目里,具體是如何做的呢?
? ? ? ? 這個(gè)代碼,我們稱之為 “坐標(biāo)”,也就是唯一的。
? ? ? ? 在Maven中,根據(jù) groupId、artifactId、version 來配置,通過這些標(biāo)簽,識(shí)別出唯一的一個(gè)jar包,這三個(gè)標(biāo)簽,缺一不可。
? ? ? ? 當(dāng)我們?cè)?pom 文件中配置完依賴之后,點(diǎn)擊刷新,Maven 就會(huì)根據(jù)坐標(biāo)的配置,去倉庫里尋找 jar包,并把他下載下來,添加到項(xiàng)目中。這個(gè) jar包 下載的地方,就稱為倉庫。
? ? ? ? 倉庫:用于存儲(chǔ)資源,管理各種 jar包。如圖:
????????
? ? ? ? Maven倉庫 的本質(zhì)就是一個(gè)目錄(文件夾),這個(gè)目錄被用來存儲(chǔ)開發(fā)中所有依賴(jar包、插件等)。
? ? ? ? 如圖:
? ? ? ? Maven倉庫 分為兩大類:本地倉庫 和 遠(yuǎn)程倉庫。其中遠(yuǎn)程倉庫又分為中央倉庫、私服 和 其他公共庫。
(2)本地倉庫
? ? ? ? 本地倉庫:自己計(jì)算機(jī)上的一個(gè)目錄(用來存儲(chǔ) jar包)。
? ? ? ? 當(dāng)項(xiàng)目中引入對(duì)應(yīng)依賴 jar包 后,首先會(huì)查找本地倉庫中是否有對(duì)應(yīng)的 jar包。
——如果有,則在項(xiàng)目中直接引用。
——如果沒有,則去中央倉庫中下載對(duì)應(yīng)的 jar包 到本地倉庫。
? ? ? ? 如圖:
? ? ? ? 本地倉庫地址可以通過 Maven 配置查看:File -> Settings,如圖:
User settings file:Maven的配置文件。
Local repository:Maven的本地倉庫地址。
? ? ? ? 如果這里默認(rèn)的目錄上有中文路徑,則要修改一下路徑,或者想把本地倉庫地址路徑換一下,可以進(jìn)行修改,下面是修改方法:
????????找到原來地址倉庫的 .m文件,全部復(fù)制下來
? ? ? ? 把它粘貼到你的目的路徑,如圖:
? ? ? ? 現(xiàn)在修改IDEA的倉庫地址目錄和Maven的配置文件(在settings上),如圖:
? ? ? ? 還要修改新的項(xiàng)目的倉庫地址和配置文件,位置在如圖:
? ? ? ? 步驟和上面的一樣,如圖:
? ? ? ? 經(jīng)過上面這些步驟,就可以修改本地倉庫路徑了(這里我把國內(nèi)源也換了一下,下面會(huì)有介紹)。我們查看本地倉庫目錄,可以看到該目錄下有許多 .jar 文件。(最開始是空的,隨著Maven的使用,該倉庫下文件會(huì)越來越多)
(3)中央倉庫
? ? ? ? 中央倉庫:Maven 軟件中內(nèi)置一個(gè)遠(yuǎn)程倉庫地址,也就是中央倉庫的地址,服務(wù)于整個(gè)互聯(lián)網(wǎng)。由 Maven 團(tuán)隊(duì)維護(hù),這是全球唯一的。我們也可以把自己寫好的 Jar包 上傳到中央倉庫(需具備一定的要求),也可以從中央倉庫下載 Jar包。
倉庫地址:https://repo1.maven.org/maven2/
查詢Jar包在倉庫的坐標(biāo)(位置):https://mvnrepository.com/
如何查找 Jar 的坐標(biāo)?
????????1、訪問??https://mvnrepository.com/? 。
? ? ? ? 2、進(jìn)行查找,比如要找的是 MySQL。
? ? ? ? 3、選擇要添加的 jar包 版本
? ? ? ? 4、查看 jar包 對(duì)應(yīng)的坐標(biāo)
? ? ? ? 框出來的文本就是jar包對(duì)應(yīng)的坐標(biāo),復(fù)制框出來的文本,粘貼進(jìn) IDEA 的 pom.xml 文件中。
(4)私有服務(wù)器
? ? ? ? 私有服務(wù)器,簡(jiǎn)稱為:私服,一般由公司團(tuán)隊(duì)搭建的私有倉庫。私服屬于某個(gè)公司,或者某個(gè)部門,往往需要一定權(quán)限;
? ? ? ? 當(dāng)有了私服之后,Maven依賴下載順序就會(huì)發(fā)生變化,如圖:
? ? ? ? 當(dāng) pom.xml 寫入一個(gè)依賴時(shí),是先到本地倉庫查找
1、如果本地倉庫有,就直接從本地倉庫拿。
2、如果本地倉庫沒有,就到私服中查找,私服中有,就從私服上下載這個(gè)依賴到本地倉庫中。
3、如果私服沒有,就會(huì)在中央倉庫上查找,中央倉庫有,私服就會(huì)從中央倉庫中下載下來,然后再傳給本地倉庫。
4、如果中央倉庫沒有,也會(huì)從中央倉庫下載,但中央倉庫沒有這個(gè)資源,就會(huì)報(bào)異常。
? ? ? ? 因?yàn)樗椒呛芏嗳嗽谑褂玫?,所以只需要第一個(gè)使用者下載一次,就可以了。
六、Maven 設(shè)置國內(nèi)源
? ? ? ? 和上面設(shè)置本地倉庫目錄操作一樣
1、配置當(dāng)前項(xiàng)目的setting:
????????file -> Settings
? ? ? ? 原始的Maven路徑,不同電腦路徑不同,可以在這上面看到的,選擇新的路徑不能有中文,操作和上面介紹修改本地倉庫路徑一樣。
配置國內(nèi)源
? ? ? ? Maven倉庫默認(rèn)在國外:https://repo1.maven.org/maven2/? ,國內(nèi)使用時(shí)會(huì)比較慢,我們可以更換為阿里云的倉庫,也可以是別的倉庫,參考:Maven 鏡像地址大全 - 知乎 (zhihu.com)
? ? ? ? 打開setting.xml,在 mirrors節(jié)點(diǎn)上,添加內(nèi)容如下:
? ? ? ? 如果上述地址不存在settings文件,則可以用這個(gè):setting.xml?(泡泡姐的gitee倉庫)
2、設(shè)置新項(xiàng)目的setting:
????????file -> New Projects Setup -> Settings for New Projects
? ? ? ? 點(diǎn)擊完這里后,操作跟上面的操作一樣
都看到這了,點(diǎn)個(gè)贊再走吧,謝謝謝謝謝
柚子快報(bào)激活碼778899分享:java Maven
文章鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。