入門 | Java開發(fā)者必備依賴管理工具)
一、前言早期我們寫Java項目想要使用第三方功能必須手動下載jar包導(dǎo)入項目。版本查找、jar包缺失、包沖突等問題經(jīng)常讓人頭疼。Maven就是專門解決這類問題的項目構(gòu)建工具核心兩大能力依賴管理、項目構(gòu)建。本文面向零基礎(chǔ)Java學(xué)習(xí)者循序漸進(jìn)講解Maven安裝、IDEA配置、依賴導(dǎo)入與依賴范圍全程附帶實操步驟跟著操作就能上手為后面學(xué)習(xí)框架開發(fā)打好基礎(chǔ)。二、Maven基礎(chǔ)認(rèn)知1、什么是Maven? Maven是Apache推出的項目管理和構(gòu)建自動化工具它基于項目對象模型POM的概念通過一小段描述信息來管理項目的構(gòu)建、報告和文檔官網(wǎng)https://maven.apache.org/它的主要功能有? 提供了一套標(biāo)準(zhǔn)化的項目結(jié)構(gòu)不同的IDE之間項目結(jié)構(gòu)不一樣不通用? 提供了一套標(biāo)準(zhǔn)化的構(gòu)建流程編譯測試打包發(fā)布? 提供了一套依賴管理機(jī)制? 標(biāo)準(zhǔn)化的項目結(jié)構(gòu)? Maven提供了一套簡單的命令來完成項目構(gòu)建Run Maven? 依賴管理其實就是管理你項目所依賴的第三方資源jar包、插件...之前導(dǎo)入jar包需要先下載jar包再復(fù)制jar包到項目最后將jar包加入到工作環(huán)境中。而Maven使用標(biāo)準(zhǔn)的坐標(biāo)配置來管理各種依賴只需要在pom.xml中進(jìn)行簡單的配置就可以完成依賴管理依賴的原理就是配置maven時有一個鏡像網(wǎng)址maven會自動根據(jù)坐標(biāo)去網(wǎng)上下載對應(yīng)jar包到本地dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.46/version /dependency2、傳統(tǒng)開發(fā)存在的痛點① 需要手動到處下載jar包尋找版本很麻煩② jar包之間存在依賴關(guān)系經(jīng)常漏導(dǎo)包③ jar版本沖突排查困難④ 項目轉(zhuǎn)移到別的電腦容易丟失jar文件3、Maven核心作用? 依賴管理只需要在配置文件寫明需要的包Maven自動下載、自動管理依賴? 項目構(gòu)建提供編譯、測試、打包、安裝、部署一套命令? 統(tǒng)一項目結(jié)構(gòu)Maven提供了一套標(biāo)準(zhǔn)化的項目結(jié)構(gòu)所有IDE使用Maven構(gòu)建的項目結(jié)構(gòu)完全一樣所有IDE創(chuàng)建的Maven項目可以通用4、Maven模型核心概念? 倉庫存放所有jar包的地方分為本地倉庫自己計算機(jī)上的一個目錄、中央倉庫由Maven團(tuán)隊維護(hù)的全球唯一的倉庫地址https://repo1.maven.org/maven2/、遠(yuǎn)程私服一般由公司團(tuán)隊搭建的私有倉庫阿里云鏡像屬于遠(yuǎn)程倉庫? pom.xml 項目核心配置文件全稱 Project Object Model項目對象模型當(dāng)項目中使用坐標(biāo)引入對應(yīng)依賴jar包后首先會查找本地倉庫中是否有對應(yīng)的jar包如果有則在項目中直接引用如果沒有則去中央倉庫中下載對應(yīng)的jar包到本地倉庫還可以搭建遠(yuǎn)程倉庫將來jar包的查找順序則變?yōu)楸镜貍}庫 → 遠(yuǎn)程倉庫 → 中央倉庫三、Maven本地安裝基礎(chǔ)命令1、安裝步驟① 下載Maven壓縮包解壓到純英文路徑路徑不能包含中文、空格② 配置環(huán)境變量新建系統(tǒng)變量 MAVEN_HOME 值為maven根目錄③ 在Path變量添加%MAVEN_HOME%\bin④ 打開cmd輸入命令校驗安裝成功mvn -v2、核心配置 settings.xml路徑maven/conf/settings.xml兩個重點配置2.1 本地倉庫配置本地倉庫就是jar包下載到電腦存放的文件夾默認(rèn)在C盤建議修改到其他盤修改 conf/settings.xml 中的 localRepository 為一個指定目錄localRepositoryD:\Maven\apache-maven-3.9.16\mvn_resp/localRepository2.2 配置阿里云私服必配解決下載緩慢問題中央倉庫在國外下載速度極慢配置國內(nèi)鏡像加速下載修改 conf/settings.xml 中的 mirrors 標(biāo)簽為其添加如下子標(biāo)簽!-- 阿里云鏡像 -- mirror idaliyun-maven/id mirrorOfcentral/mirrorOf urlhttps://maven.aliyun.com/repository/public/url blockedfalse/blocked /mirror2.3 JDK版本配置確保構(gòu)建和運行項目時使用的是預(yù)期的JDK環(huán)境避免因為JDK版本不兼容導(dǎo)致報錯。這里配置的是JDK1.8的版本版本不一致只需要改數(shù)字就可以。!-- JDK1.8 -- profile idjdk-1.8/id activation activeByDefaulttrue/activeByDefault jdk1.8/jdk /activation properties maven.compiler.source1.8/maven.compiler.source maven.compiler.target1.8/maven.compiler.target maven.compiler.compilerVersion1.8/maven.compiler.compilerVersion /properties /profile3、常用基礎(chǔ)命令cmd中執(zhí)行執(zhí)行命令需要在 pom.xml 所在文件夾打開終端mvn compile # 編譯源文件 mvn clean # 清理編譯產(chǎn)生的文件 mvn test # 執(zhí)行單元測試 mvn package # 項目打包(jar/war) mvn install # 打包并且安裝到本地倉庫4、Maven的生命周期? Maven 構(gòu)建項目生命周期描述的是一次構(gòu)建過程經(jīng)歷了多少個事件? Maven 對項目構(gòu)建的生命周期劃分為三套? clean清理工作pre-clean → clean → post-clean? default核心工作例如編譯測試打包安裝等compile → test → package → install? site產(chǎn)生報告發(fā)布站點等pre-site → site → post-site同一生命周期內(nèi)執(zhí)行后邊的命令前邊的所有命令會自動執(zhí)行四、IDEA配置Maven1、IDEA配置Maven環(huán)境① 選擇IDEA中 File → Settings② 搜索 maven③ 設(shè)置IDEA使用本地安裝的Maven并修改配置文件路徑搜索maven在對應(yīng)的位置添加maven解壓目錄路徑、settings.xml配置文件路徑和倉庫文件夾路徑記得點擊apply應(yīng)用再點擊確定。點擊Runner運行程序選擇JDK版本點擊apply應(yīng)用再點擊確定。點擊Importing正在導(dǎo)入選擇JDK版本點擊apply應(yīng)用再點擊確定。搜索java CompilerJava 編輯器根據(jù)自己的JDK版本進(jìn)行選擇記得點擊apply應(yīng)用。2、Maven 坐標(biāo)詳解? 什么是坐標(biāo)? Maven中的坐標(biāo)是資源的唯一標(biāo)識? 使用坐標(biāo)來定義項目或引用項目中需要的依賴? Maven坐標(biāo)主要組成? groupId定義當(dāng)前Maven項目隸屬組織名稱通常是域名反寫例如com.alibaba? artifactId定義當(dāng)前Maven項目名稱通常是模塊名稱例如order-service、goods-service? version定義當(dāng)前項目版本號例如定義一個項目的坐標(biāo)groupIdcom.maven-project/groupId artifactIdmaven-demo/artifactId version1.0-SNAPSHOT/version下面是MySQL驅(qū)動的版本dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.46/version /dependency3、IDEA創(chuàng)建Maven項目① 創(chuàng)建模塊選擇Maven點擊Next② 填寫模塊名稱坐標(biāo)信息點擊finish創(chuàng)建完成新版本的只需要創(chuàng)建Java項目時點擊Maven③ 編寫代碼并運行4、IDEA導(dǎo)入Maven項目① 選擇右側(cè)Maven面板點擊號② 選中對應(yīng)項目的pom.xml文件雙擊即可5、配置 Maven-Helper 插件① 選擇IDEA中 File → Settings② 選擇 Plugins③ 搜索 Maven選擇第一個Maven Helper點擊Install安裝彈出面板中點擊Accept④ 重啟IDEA裝完插件后可以直接右鍵選擇“Run Maven”或者“Debug Maven”五、依賴管理與依賴范圍scope詳解1、使用坐標(biāo)導(dǎo)入jar包① 在 pom.xml 中編寫 dependencies 標(biāo)簽② 在 dependencies 標(biāo)簽中使用 dependency 引入坐標(biāo)③ 定義坐標(biāo)的 groupIdartifactIdversion④ 點擊刷新按鈕是坐標(biāo)生效示例MySQL驅(qū)動依賴dependencies !-- mysql坐標(biāo) -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.32/version /dependency /dependencies? 坐標(biāo)去哪里找推薦網(wǎng)站Maven倉庫官網(wǎng)https://mvnrepository.com搜索對應(yīng)組件直接復(fù)制依賴代碼寫完依賴后點擊IDEA右側(cè)Maven工具欄刷新按鈕自動下載jar包到本地倉庫? 如果本地倉庫已有在 pom.xml 中點擊 Alt Insert選擇 Dependency直接搜索導(dǎo)入點擊刷新按鈕使坐標(biāo)生效。2、依賴范圍 scope重點scope 控制依賴在哪個生命周期生效不寫 scope 默認(rèn) compile? scope默認(rèn)值compile? 通過設(shè)置坐標(biāo)的依賴范圍(scope)可以設(shè)置對應(yīng)的jar包的作用范圍編譯環(huán)境、測試環(huán)境、運行環(huán)境dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.13/version scopetest/scope /dependency依賴范圍編譯classpath測試classpath運行classpath例子compileYYYlogbacktest-Y-JunitprovidedYY-servlet-apiruntime-YYjdbc驅(qū)動systemYY-存儲在本地的jar包import引入DependencyManagement六、結(jié)語本篇我們完整學(xué)習(xí)了Maven的安裝、環(huán)境配置、IDEA整合、依賴導(dǎo)入與scope依賴范圍。Maven是Java開發(fā)的基礎(chǔ)工具后續(xù)MyBatis、Spring、SpringBoot全部依靠Maven管理項目依賴。大家一定要熟練掌握依賴查找、刷新項目、鏡像配置這些基礎(chǔ)操作避免后續(xù)學(xué)習(xí)框架時卡在環(huán)境問題上。