根據圖片理解maven

maven 是一款強大的項目管理與構建工具,在 Java 開發中尤為常用,結合這張圖,從核心功能、倉庫體系、工作流程三方面快速了解:

一、核心作用

  • 項目構建:自動完成編譯、測試、打包、部署等流程(比如把?.java?編譯成?.class、打成?jar/war?包 )。
  • 依賴管理:幫你 “自動找 jar 包”,不用手動下載、復制粘貼,通過簡單配置就能引入框架(如 Spring、MyBatis )。

二、倉庫體系(重點)

Maven 用三級倉庫管理 jar 包,流程像 “接力賽”:

  1. 本地倉庫(藍色):你電腦里的一個文件夾(比如?C:\Users\用戶名\.m2\repository?),存下載好的 jar 包,優先查找,避免重復下載。
  2. 遠程倉庫(私服)(綠色):公司 / 團隊自己搭的私有倉庫(可選),用于存內部框架、公共組件,團隊協作時用
  3. 中央倉庫(粉色):Maven 官方維護的 “全球倉庫”,包含幾乎所有開源 jar 包,本地和私服沒有時,會從這下載

三、工作流程(依賴查找邏輯)

當你在項目里通過?pom.xml?引入一個依賴(比如?Spring?),Maven 會按以下順序找 jar 包:

  1. 先看本地倉庫有沒有 → 有就直接用。
  2. 沒有的話,看公司有沒有遠程倉庫(私服)?→ 有就從私服下載到本地。
  3. 還沒有,就去中央倉庫下載 → 下完存本地,下次直接用。

四、為什么用 Maven?

  • 省心:不用手動管理 jar 包,一行配置自動下載。
  • 規范:統一項目結構、構建流程,團隊協作不 “打架”。
  • 高效:一次下載,本地倉庫復用,多人開發共享依賴。

簡單說,Maven 是 Java 項目的 “管家”,用倉庫體系幫你自動管依賴、管構建,讓開發更專注寫代碼~

這張圖聚焦?Maven 生命周期,是理解 Maven 構建流程的核心。以下用 “蓋房子” 類比,拆解 Maven 核心邏輯:

一、核心概念:Maven 生命周期是 “構建流程的階段組合”

Maven 把項目構建(從代碼到可運行產物)拆成?3 套 “流程模板”(生命周期),每套模板包含多個階段(Phase),類似 “蓋房子分奠基→砌墻→裝修” 的流程。

二、3 套生命周期詳解(類比 “蓋房子流程”)

1.?clean 生命周期:“拆房子”(清理舊產物)
  • 作用:刪除上一次構建的殘留文件(如?target?目錄),為新構建 “騰地方”。
  • 階段
    • pre-clean:準備清理(極少手動用,Maven 自動觸發前置邏輯)。
    • clean:執行清理(刪除?target?目錄)。
    • post-clean:清理后收尾(同理,極少手動用)。

類比:拆房子前先斷水斷電(pre-clean)→ 拆房子(clean)→ 清理建筑垃圾(post-clean)。

2.?default 生命周期:“蓋房子核心流程”(編譯→測試→打包→部署)
  • 作用:項目構建的核心流程,從源碼到可運行產物的完整步驟。
  • 階段(重點,日常開發常用):
    • compile:編譯代碼(把?.java?轉成?.class)。
    • test:運行單元測試(確保代碼邏輯正確)。
    • package:打包(生成 Jar/War 包,類似 “把房子裝修好封裝”)。
    • install:安裝到本地倉庫(把 Jar 包存到本地 Maven 倉庫,供其他項目引用)。

類比
compile?→ 打地基、砌墻(把設計圖轉成實體結構)。
test?→ 驗收(檢查墻砌得直不直、水電通不通)。
package?→ 裝修(給房子做最終包裝,具備交付條件)。
install?→ 把房子登記到 “本地房產庫”(方便其他項目 / 人引用)。

3.?site 生命周期:“做房產證 / 說明書”(生成項目報告)
  • 作用:生成項目文檔、報告(如 API 文檔、測試覆蓋率報告)。
  • 階段
    • pre-site:準備生成報告(自動觸發前置邏輯)。
    • site:生成報告(如 HTML 格式的項目文檔)。
    • post-site:報告生成后處理(極少手動用)。

類比:給房子辦房產證、拍宣傳照(生成文檔 / 報告),方便別人了解項目。

三、關鍵規則:“執行后邊階段,自動觸發前邊所有階段”

同一生命周期內,執行某個階段時,Maven 會自動執行它之前的所有階段

比如:

  • 執行?mvn package(屬于 default 生命周期),Maven 會自動先執行?compile?→?test?→ 再執行?package
  • 執行?mvn install,會自動執行?compile?→?test?→?package?→?install

四、總結:Maven 生命周期是 “標準化的構建流程”

Maven 通過?3 套生命周期,把項目構建拆成清晰的階段,讓構建流程標準化、自動化

  • clean?負責 “清理舊產物”,
  • default?負責 “核心構建流程”(從編譯到部署),
  • site?負責 “生成項目文檔”。

執行命令時,Maven 會自動串聯同一生命周期的階段,讓開發者只需關注 “要達到的目標”(如?package?或?install),無需手動執行每個步驟。這就是 Maven 提升效率的核心邏輯~

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909857.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909857.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909857.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里云中間件:解鎖云端應用的強大引擎

走進阿里云中間件 在云計算的宏大版圖中,阿里云無疑是一位舉足輕重的參與者。而阿里云中間件,作為阿里云服務體系的關鍵構成部分,在整個云計算架構里扮演著不可或缺的角色,宛如一座橋梁,緊密地連接著底層基礎設施與上…

windows下FFmpeg精簡

1. 安裝MSYS2和必要工具 下載并安裝MSYS2打開 MSYS2中的 MinGW 64-bit 終端更新系統包: pacman -Syu # 如果提示關閉終端,關閉后重新打開再次運行: pacman -Su裝編譯工具鏈: pacman -S --needed base-devel mingw-w64-x86_64-t…

WPF數據綁定疑惑解答--(關于控件的Itemsource,Collection綁定)

1. ListView綁定的數據類型問題 在 MainWindow 的構造函數中綁定 List11.ItemsSource List<string> rpcListnew List<string>(); public MainWindow() {InitializeComponent();// 確保 List11 的 ItemsSource 已經綁定到 rpcListList11.ItemsSource rpcList; } …

【Centos7安裝Cloudera Manager5.12、CDH5.12詳細步驟】

安裝Cloudera Manager&#xff08;5.12.1&#xff09;一定要細心&#xff0c;每一步走錯都可能造成最終安裝失敗。 安裝Cloudera Manager&#xff08;5.12.1&#xff09;一定要硬件資源充足。 本示例參考了眾多網上資料&#xff08;放在文末&#xff09;&#xff0c;消耗了1000…

青少年編程與數學 01-011 系統軟件簡介 25 Web服務器及代理軟件

青少年編程與數學 01-011 系統軟件簡介 25 Web服務器及代理軟件 一、Web 服務器軟件&#xff08;一&#xff09;定義與功能&#xff08;二&#xff09;歷史與主要產品1. Apache HTTP Server2. Nginx3. Microsoft Internet Information Services&#xff08;IIS&#xff09;4. L…

Vue的隱形魔法:虛擬DOM和Diff算法如何讓頁面飛起來?

大家好&#xff0c;我是江城開朗的豌豆&#xff0c;一名擁有6年以上前端開發經驗的工程師。我精通HTML、CSS、JavaScript等基礎前端技術&#xff0c;并深入掌握Vue、React、Uniapp、Flutter等主流框架&#xff0c;能夠高效解決各類前端開發問題。在我的技術棧中&#xff0c;除了…

SAP_HANA常用sql合集——持續更新中

一、時間格式轉換 (1)切換日期格式yyyymmdd的字段數據為yyyy-mm-dd select TO_VARCHAR(TO_DATE(t1.time1, YYYYMMDD), YYYY-MM-DD) AS time1, TO_VARCHAR(TO_DATE(t1.time2, YYYYMMDD), YYYY-MM-DD) AS time2 from table

【AI Study】第四天,Pandas(5)- 數據可視化

文章概要 本文詳細介紹 Pandas 的數據可視化功能&#xff0c;包括&#xff1a; 基礎繪圖高級可視化統計圖表實際應用示例 基礎繪圖 折線圖 # 基本折線圖 df.plot(x日期, y值) df.plot.line(x日期, y值)# 多列折線圖 df.plot(x日期, y[列1, 列2])# 自定義樣式 df.plot(x日期…

Linux故障排查

目錄 案例1&#xff1a;GRUB引導故障 案例2&#xff1a;文件系統只讀故障 案例3&#xff1a;OOM Killer觸發 案例4&#xff1a;系統啟動卡住&#xff08;initramfs損壞&#xff09; 案例5&#xff1a;磁盤空間耗盡 案例6&#xff1a;SSH登錄緩慢 案例7&#xff1a;邏輯卷…

pikachu靶場通關筆記36 越權01之水平越權

目錄 一、水平越權 二、賬戶功能探測 1、登錄賬號lucy 2、登錄賬號lili 3、登錄賬號kobe 三、源碼分析 四、滲透實戰 1、登錄lucy賬號 2、越權訪問lili賬戶資料 3、越權訪問kobe賬戶資料 本系列為《pikachu靶場通關筆記》滲透實戰&#xff0c;本文通過對越權關卡源碼…

javaweb -Ajax

Ajax的定義 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一種用于創建異步 Web 應用的技術&#xff0c;允許網頁在不重新加載整個頁面的情況下與服務器交換數據并更新部分內容。 Ajax的核心特點 異步通信&#xff1a;通過后臺與服務器交互&#xff0c;用…

11.OpenCV—聯合QT環境配置

1.QT環境變量配置 在Qt中配置OpenCV 3.4.6與Visual Studio 2017的步驟如下&#xff1a; 一、前期準備 安裝組件驗證 確認已安裝Qt的MSVC2017版本&#xff08;如Qt 5.12 MSVC2017 64-bit&#xff09; 檢查Visual Studio 2017的MSVC編譯器是否正常工作 OpenCV庫準備 從官網…

2025虛幻引擎一般用什么模型格式

2025虛幻引擎一般用什么模型格式 前言 積累了一些人物模型發現有的有骨骼&#xff0c;有的沒骨骼&#xff0c;有的要轉換格式&#xff0c;有的直接可以用&#xff0c;所以了解一下各種模型。 2025虛幻人物模型積累 格式轉換真麻煩。 2025.uexp、.uasset文件、.ubulk如何打…

電腦在使用過程中頻繁死機怎么辦

正興致勃勃地打游戲&#xff0c;或者趕著完成一份重要的工作文檔&#xff0c;電腦突然死機了&#xff0c;鼠標動不了&#xff0c;鍵盤也沒反應&#xff0c;只能干瞪眼干著急。電腦在使用過程中頻繁死機&#xff0c;真的太影響心情和效率了。今天咱就來好好聊聊&#xff0c;遇到…

【Java_EE】設計模式

設計模式&#xff1a;解決一些固定場景的固定套路&#xff0c;是一種代碼風格的知道指南。設計模式不止23種 1、單例設計模式 單例設計模式&#xff1a;確保一個類只有一個實例&#xff0c;提供全局訪問點 單例模式的實現方式&#xff1a; 1&#xff1a;餓漢模式 /*** 餓漢…

Nginx代理緩存靜態資源

問題描述 有兩臺服務器&#xff0c;一臺是外網的網關服務器&#xff0c;一臺是內網的資源服務器&#xff0c;但是兩臺服務器距離很遠&#xff08;跨省&#xff09;&#xff0c;頁面中依賴大量插件資源&#xff0c;加載耗時久&#xff0c;本章重點講解Nginx代理緩存靜態資源。 …

Blender 轉換為 STP:軟件操作與迪威模型網在線轉換全指南

在三維設計與工程制造領域&#xff0c;不同格式的文件承擔著各自的使命。Blender 作為一款功能強大且開源的三維建模軟件&#xff0c;被眾多設計師、藝術家以及學生廣泛使用&#xff0c;能夠創作出風格多樣、細節豐富的三維模型。而 STP 格式作為制造業通用的數據交換標準&…

WebFuture:PDF頁面去掉下載按鈕

問題描述&#xff1a;客戶要求pdf頁面不顯示下載按鈕 解決辦法&#xff1a;WF15.2版本開始會在內容管理配置增加“允許下載 PDF“開關&#xff1b;之前的版本需要替換文件來處理 1.備份網站下的base文件夾&#xff0c;路徑為/wwwroot/content/_common/base/&#xff0c;然后覆…

【JVM】- 類加載與字節碼結構2

編譯期處理&#xff08;語法糖&#xff09; java編譯器把.java源碼編譯成.class字節碼的過程&#xff0c;自動生成和轉換的一些代碼。 默認構造器 public class Candy01 { }編譯成class后的代碼 public class Candy1 {public Candy1(){super();} }自動拆裝箱&#xff08;jd…

WSL2 中安裝 cuDNN?? 的完整指南

以下是關于 ??cuDNN?? 的詳細介紹及在 ??WSL2 中安裝 cuDNN?? 的完整指南&#xff0c;結合權威資料整理而成&#xff1a; &#x1f4da; ??一、cuDNN 深度解析?? ??1. 定義與作用?? ??cuDNN??&#xff08;CUDA Deep Neural Network Library&#xff09;是…