最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深度解析JDK和Maven究竟是什么,兩者之間有什么聯(lián)系

 更新時(shí)間:2025年08月22日 10:42:46   作者:℡余暉^  
JDK是Java開發(fā)基礎(chǔ)工具包,負(fù)責(zé)編譯、運(yùn)行,Maven是項(xiàng)目管理工具,處理依賴和構(gòu)建流程,二者協(xié)作支撐項(xiàng)目全生命周期,配置國內(nèi)外鏡像可優(yōu)化依賴下載效率,本文主要給大家講解JDK和Maven究竟是什么,兩者之間有什么聯(lián)系,感興趣的朋友一起看看吧

本文主要是為了講清楚JDK和Maven究竟是什么,兩者之間有什么聯(lián)系?

JDK(Java Development Kit)和Maven是Java開發(fā)中兩個(gè)核心工具,但它們的定位和功能完全不同。我將從兩者各自的作用,聯(lián)系和常見誤解三個(gè)維度來進(jìn)行詳細(xì)說明。

一、JDK 是什么?

JDK 是 ??Java 開發(fā)工具包(Java Development Kit)??,是 Java 生態(tài)中最基礎(chǔ)的工具集,??所有 Java 程序的開發(fā)、編譯、運(yùn)行都依賴 JDK??。它包含以下核心組件:

組件作用
??JRE(Java Runtime Environment)??Java 運(yùn)行時(shí)環(huán)境,包含 JVM(Java 虛擬機(jī))和核心類庫(如 java.lang),負(fù)責(zé)執(zhí)行編譯后的字節(jié)碼(.class 文件)。
??javac 編譯器??將 Java 源代碼(.java 文件)編譯為字節(jié)碼(.class 文件)。
??jdb 調(diào)試工具??用于調(diào)試 Java 程序。
??jconsole/jvisualvm??監(jiān)控 JVM 運(yùn)行狀態(tài)的工具(如內(nèi)存、線程)。
??其他工具??如 jar(打包工具)、jps(查看進(jìn)程)等。

??關(guān)鍵結(jié)論??:沒有 JDK,就無法編寫、編譯或運(yùn)行任何 Java 程序(即使是簡單的 HelloWorld)。

二、Maven 是什么?

Maven 是 ??Java 項(xiàng)目的構(gòu)建與依賴管理工具??(也可用于其他語言,但主要服務(wù)于 Java),核心解決兩大問題:

1. ??依賴管理??

傳統(tǒng) Java 項(xiàng)目需要手動(dòng)下載第三方庫(如 Spring、MyBatis),并處理版本沖突、依賴傳遞(A 依賴 B,B 依賴 C,自動(dòng)傳遞 C)等問題。Maven 通過 ??pom.xml(項(xiàng)目對(duì)象模型)?? 聲明依賴,自動(dòng)從 ??遠(yuǎn)程倉庫(如 Maven 中央倉庫)?? 下載所需庫,并存儲(chǔ)到 ??本地倉庫??(本地緩存),避免重復(fù)下載。

2. ??項(xiàng)目構(gòu)建??

提供標(biāo)準(zhǔn)化的 ??生命周期(Lifecycle)??,自動(dòng)化完成編譯、測試、打包(如生成 JAR/WAR)、部署等流程。例如執(zhí)行 mvn clean package 會(huì)自動(dòng):

  • 清理舊編譯文件(clean)→ 編譯源代碼(compile)→ 運(yùn)行單元測試(test)→ 打包為 JARpackage)。

??關(guān)鍵結(jié)論??:Maven 不負(fù)責(zé) Java 程序的編譯或運(yùn)行(這由 JDK 完成),而是簡化項(xiàng)目管理和依賴處理。

三、JDK 和 Maven 的聯(lián)系

兩者在 Java 開發(fā)中??協(xié)作但分工明確??,共同支撐項(xiàng)目的完整生命周期:

1. 依賴編譯需要 JDK

當(dāng) Maven 下載完項(xiàng)目依賴(如 spring-core-5.3.0.jar)后,執(zhí)行 mvn compile 時(shí),Maven 會(huì)調(diào)用 JDK 中的 javac 編譯器,將項(xiàng)目的 .java 源文件編譯為 .class 字節(jié)碼。??沒有 JDK,Maven 無法完成編譯步驟??。

2. 依賴運(yùn)行需要 JDK

項(xiàng)目打包后的 .jar 文件(字節(jié)碼)最終需要運(yùn)行在 JVM 上(JDK 的一部分)。例如通過 java -jar app.jar 啟動(dòng)程序時(shí),本質(zhì)是 JVM(JDK 提供)加載并執(zhí)行字節(jié)碼。??沒有 JDK,編譯后的代碼無法運(yùn)行??。

3. 版本兼容性要求

Maven 本身不限制 JDK 版本,但項(xiàng)目中聲明的依賴(如 Spring Boot 3.0+ 要求 JDK 17+)需要與本地安裝的 JDK 版本匹配。例如:

  • 若項(xiàng)目依賴 Java 11 的特性(如 var 關(guān)鍵字),但本地 JDK 是 8,則編譯會(huì)報(bào)錯(cuò)。
  • 因此,JDK 版本需滿足項(xiàng)目依賴的最低要求(由 pom.xml 或文檔指定)。

四、常見誤解澄清

誤解 1:“Maven 是本地依賴倉庫”

??錯(cuò)誤??。Maven 的 ??本地倉庫?? 是它管理的一個(gè)目錄(默認(rèn)在 ~/.m2/repository),用于緩存從遠(yuǎn)程倉庫下載的依賴。Maven 本身是工具,本地倉庫是它的“緩存區(qū)”。

誤解 2:“有了 Maven 就不需要 JDK”

??錯(cuò)誤??。Maven 只是管理依賴和構(gòu)建流程,Java 程序的編譯和運(yùn)行必須依賴 JDK(尤其是 javac 和 JVM)。

誤解 3:“JDK 包含 Maven”

??錯(cuò)誤??。JDK 是 Java 開發(fā)工具包,Maven 是獨(dú)立的項(xiàng)目管理工具(需單獨(dú)安裝),兩者無包含關(guān)系。

總結(jié)

  • ??JDK??:Java 開發(fā)的“地基”,負(fù)責(zé)源代碼編譯、字節(jié)碼運(yùn)行。
  • ??Maven??:Java 項(xiàng)目的“管家”,負(fù)責(zé)依賴管理和構(gòu)建流程自動(dòng)化。
  • ??聯(lián)系??:Maven 依賴 JDK 完成編譯和運(yùn)行,JDK 為 Maven 處理的代碼提供運(yùn)行環(huán)境,二者共同支撐 Java 項(xiàng)目的全生命周期。

最后順便提一下如何更新Maven倉庫的鏡像地址,提高依賴的下載速度?

在國內(nèi)使用 Maven 時(shí),由于默認(rèn)的中央倉庫(https://repo.maven.apache.org/maven2)服務(wù)器位于國外,下載依賴速度較慢甚至超時(shí)。通過更換為??國內(nèi)鏡像倉庫??(如阿里云、華為云、清華大學(xué)鏡像站等),可以顯著提升依賴下載速度。以下是詳細(xì)的操作步驟和常用鏡像源推薦:

Maven 的鏡像配置通過 settings.xml 文件完成,該文件有兩種位置:

  • ??全局配置??:Maven 安裝目錄下的 conf/settings.xml(所有項(xiàng)目共享)。
  • ??項(xiàng)目級(jí)配置??:項(xiàng)目根目錄下的 pom.xml 或 .mvn/maven.config(僅當(dāng)前項(xiàng)目生效,優(yōu)先級(jí)高于全局)。

??推薦修改全局配置??,避免每個(gè)項(xiàng)目重復(fù)設(shè)置。

??二、更換鏡像的具體步驟??

1. 找到settings.xml文件

  • 全局路徑示例(Windows):C:\Program Files\apache-maven-3.8.6\conf\settings.xml
  • 全局路徑示例(macOS/Linux):/usr/local/apache-maven-3.8.6/conf/settings.xml

2. 編輯<mirrors>標(biāo)簽添加鏡像配置

在 settings.xml 中找到 <mirrors> 節(jié)點(diǎn)(若不存在則手動(dòng)創(chuàng)建),添加鏡像規(guī)則。每個(gè)鏡像需指定以下屬性:

  • <id>:鏡像的唯一標(biāo)識(shí)(自定義,不可重復(fù))。
  • <name>:鏡像的描述(可選)。
  • <url>:鏡像倉庫的地址(核心)。
  • <mirrorOf>:指定該鏡像替代的原倉庫(關(guān)鍵策略)。

??三、常用國內(nèi)鏡像源推薦??

以下是國內(nèi)常用的 Maven 鏡像源,覆蓋主流需求:

鏡像源名稱鏡像地址特點(diǎn)
??阿里云鏡像??https://maven.aliyun.com/repository/public國內(nèi)最常用,覆蓋幾乎所有 Maven 中央倉庫的依賴,更新及時(shí)。
??清華大學(xué)鏡像站??https://mirrors.tuna.tsinghua.edu.cn/maven/清華大學(xué)開源軟件鏡像站,同步官方倉庫,穩(wěn)定性高。
??華為云鏡像??https://repo.huaweicloud.com/javaee/華為云提供,適合對(duì)網(wǎng)絡(luò)穩(wěn)定性要求高的場景。
??網(wǎng)易鏡像??http://maven.net.cn/content/groups/public/較早的國內(nèi)鏡像,部分舊依賴可能更友好。

??四、配置示例(以阿里云鏡像為例)??

在 settings.xml 的 <mirrors> 標(biāo)簽內(nèi)添加以下內(nèi)容(覆蓋中央倉庫的所有請(qǐng)求):

<mirrors>
  <!-- 阿里云公共倉庫鏡像 -->
  <mirror>
    <id>aliyun-maven</id>
    <name>Aliyun Maven Repository</name>
    <url>https://maven.aliyun.com/repository/public</url>
    <!-- mirrorOf="*" 表示替代所有遠(yuǎn)程倉庫的請(qǐng)求(推薦) -->
    <!-- mirrorOf="central" 表示僅替代中央倉庫的請(qǐng)求 -->
    <mirrorOf>*</mirrorOf>
  </mirror>
</mirrors>

關(guān)鍵參數(shù)說明:

  • <mirrorOf>*</mirrorOf>* 是通配符,表示??替代所有遠(yuǎn)程倉庫的請(qǐng)求??(包括中央倉庫和其他第三方倉庫)。
  • <mirrorOf>central</mirrorOf>:僅替代 Maven 中央倉庫(central 是中央倉庫的默認(rèn) ID)的請(qǐng)求。
    (如果項(xiàng)目中顯式聲明了其他第三方倉庫,如 https://repo.example.com,則需要額外配置 <mirrorOf>example-repo-id</mirrorOf>。)

??五、驗(yàn)證鏡像是否生效??

修改 settings.xml 后,執(zhí)行 Maven 構(gòu)建命令(如 mvn clean install),觀察控制臺(tái)輸出的下載日志:

[INFO] Downloading from aliyun-maven: https://maven.aliyun.com/repository/public/.../spring-core-5.3.0.jar

若日志中出現(xiàn)鏡像地址(如 aliyun-maven 對(duì)應(yīng)的 URL),說明配置成功。

??六、常見問題與注意事項(xiàng)??

  • ??鏡像沖突??:若多個(gè)鏡像配置了相同的 <mirrorOf>,Maven 會(huì)按 <mirrors> 標(biāo)簽中的順序選擇第一個(gè)匹配的鏡像。建議只保留一個(gè)常用鏡像。
  • ??私有倉庫兼容??:如果項(xiàng)目使用私有倉庫(如 Nexus),需在 <mirrors> 中排除私有倉庫的 ID(例如 <mirrorOf>*,!my-private-repo</mirrorOf>),否則會(huì)被鏡像覆蓋。
  • ??HTTPS 與 HTTP??:國內(nèi)鏡像通常支持 HTTPS,推薦使用 HTTPS 地址(避免網(wǎng)絡(luò)攔截)。
  • ??緩存更新??:Maven 本地倉庫(默認(rèn) ~/.m2/repository)可能緩存了舊版本的依賴,若鏡像源中依賴版本更新,需手動(dòng)刪除本地舊文件后重新下載。

??總結(jié)??

通過修改 Maven 的 settings.xml 配置文件,添加國內(nèi)鏡像源(如阿里云),可以快速解決依賴下載慢的問題。核心是在 <mirrors> 標(biāo)簽中指定鏡像地址和覆蓋策略(mirrorOf),并驗(yàn)證配置是否生效。

最關(guān)鍵的是在idea中修改默認(rèn)的配置文件和倉庫地址。(默認(rèn)會(huì)下載在C盤,時(shí)間久了占用太多空間。)

注:上面的Maven home_path是Maven的安裝路徑,User settings_file是自定義的settings.xml文件(全局生效) Local repository是本地倉庫路徑(所有依賴的的存儲(chǔ)位置)

另外,還有一個(gè)問題就是,我發(fā)現(xiàn)每次導(dǎo)入別人的項(xiàng)目,都需要手動(dòng)進(jìn)行修改,但是為了更加方便,同樣也是有方法解決的。(有時(shí)忘記修改配置,也是很頭疼)

1.進(jìn)入Flie->New Projects Setup -> Settings for New Projects(Windows/Linux)

  • Mac用戶是 IntelliJ IDEA → Preferences → Build, Execution, Deployment → Build Tools → Maven

然后就可以對(duì)默認(rèn)的Maven配置進(jìn)行修改了。(修改完以后可以新建一個(gè)新項(xiàng)目測試一下是否配置成功。如果沒有成功可以清理一下緩存或重啟idea。)

點(diǎn)擊頂部菜單 File > Invalidate Caches / Restart(或使用快捷鍵 Ctrl + Shift + A 搜索 Invalidate Caches

  • ??常規(guī)緩存清理??:勾選 ??Invalidate and Restart??(默認(rèn)不勾選其他選項(xiàng)),適合解決 IDE 卡頓、索引緩慢等問題。
  • ??本地歷史問題??:若需清除本地修改記錄(謹(jǐn)慎操作),勾選第 1 項(xiàng)。
  • ??VCS 操作緩慢??:勾選第 2 項(xiàng),重建 VCS 索引(可能耗時(shí)較久)。
  • ??共享索引異常??:勾選第 3 項(xiàng),強(qiáng)制更新共享索引(需聯(lián)網(wǎng))。
  • ??網(wǎng)頁內(nèi)容異常??:勾選第 4 項(xiàng),修復(fù)內(nèi)置瀏覽器顯示問題。

到此這篇關(guān)于深度解析JDK和Maven究竟是什么,兩者之間有什么聯(lián)系的文章就介紹到這了,更多相關(guān)jdk maven聯(lián)系內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一篇文章帶你了解Maven的繼承和聚合

    一篇文章帶你了解Maven的繼承和聚合

    這篇文章主要為大家介紹了Maven的繼承和聚合,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Maven鏡像配置導(dǎo)致依賴下載失敗問題的解決方案

    Maven鏡像配置導(dǎo)致依賴下載失敗問題的解決方案

    在項(xiàng)目開發(fā)中,使用 Maven 管理依賴是常見的做法,Maven 的依賴通常從 倉庫中獲取,然而,在配置鏡像時(shí),可能會(huì)遇到依賴無法下載的問題,尤其是將鏡像設(shè)置為通配符 * 時(shí),本文將深入分析這一問題,并提供解決方案,需要的朋友可以參考下
    2025-05-05
  • MyBatis?Mapper.XML?標(biāo)簽使用小結(jié)

    MyBatis?Mapper.XML?標(biāo)簽使用小結(jié)

    在MyBatis中,通過resultMap可以解決字段名和屬性名不一致的問題,對(duì)于復(fù)雜的查詢,引用實(shí)體或使用<sql>標(biāo)簽可以定義復(fù)用的SQL片段,提高代碼的可讀性和編碼效率,使用這些高級(jí)映射和動(dòng)態(tài)SQL技巧,可以有效地處理復(fù)雜的數(shù)據(jù)庫交互場景
    2024-10-10
  • Mybatis-Plus中update()和updateById()將字段更新為null

    Mybatis-Plus中update()和updateById()將字段更新為null

    本文主要介紹了Mybatis-Plus中update()和updateById()將字段更新為null,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Spring項(xiàng)目接入DeepSeek的兩種超簡單的方式分享

    Spring項(xiàng)目接入DeepSeek的兩種超簡單的方式分享

    DeepSeek?作為一款卓越的國產(chǎn)?AI?模型,越來越多的公司考慮在自己的應(yīng)用中集成,本文為大家?分享了Spring項(xiàng)目接入DeepSeek的兩種超簡單的方式,希望對(duì)大家有所幫助
    2025-02-02
  • 詳解IDEA使用Maven項(xiàng)目不能加入本地Jar包的解決方法

    詳解IDEA使用Maven項(xiàng)目不能加入本地Jar包的解決方法

    這篇文章主要介紹了詳解IDEA使用Maven項(xiàng)目不能加入本地Jar包的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java中將科學(xué)計(jì)數(shù)法轉(zhuǎn)換普通計(jì)數(shù)法的簡單方法

    java中將科學(xué)計(jì)數(shù)法轉(zhuǎn)換普通計(jì)數(shù)法的簡單方法

    下面小編就為大家?guī)硪黄猨ava中將科學(xué)計(jì)數(shù)法轉(zhuǎn)換普通計(jì)數(shù)法的簡單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • Java的深拷貝和淺拷貝深入了解

    Java的深拷貝和淺拷貝深入了解

    這篇文章主要為大家介紹了Java的深拷貝和淺拷貝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • SpringBoot2.x使用POI實(shí)現(xiàn)導(dǎo)入數(shù)據(jù)到Excel

    SpringBoot2.x使用POI實(shí)現(xiàn)導(dǎo)入數(shù)據(jù)到Excel

    這篇文章主要為大家詳細(xì)介紹了SpringBoot2.x如何使用POI實(shí)現(xiàn)導(dǎo)入數(shù)據(jù)到Excel,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-07-07
  • Java下SpringBoot創(chuàng)建定時(shí)任務(wù)詳解

    Java下SpringBoot創(chuàng)建定時(shí)任務(wù)詳解

    這篇文章主要介紹了Java下SpringBoot創(chuàng)建定時(shí)任務(wù)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

孙吴县| 南皮县| 田阳县| 台州市| 卢氏县| 兴国县| 新宾| 正安县| 石首市| 蕉岭县| 呼和浩特市| 东阳市| 绥化市| 永寿县| 汝州市| 二连浩特市| 阜平县| 新乡县| 天柱县| 遂平县| 杭锦后旗| 达州市| 庆云县| 玉溪市| 临西县| 南昌市| 金昌市| 青田县| 怀柔区| 墨竹工卡县| 商城县| 杭锦旗| 西藏| 左云县| 肥东县| 沈丘县| 都兰县| 东莞市| 安平县| 怀集县| 剑川县|