[Maven 基礎課程]Maven 是什么

Maven 的官方網站:https://maven.apache.org/

來自 Maven 官網的對于 Maven 是什么的描述:

Apache Maven is a build tool for Java projects. Using a project object model (POM), Maven manages a project’s compilation, testing, and documentation.

翻譯過來就是:Apache Maven 是一款用于 Java 項目的構建工具。通過使用項目對象模型(POM),Maven 能夠管理項目的編譯、測試以及文檔編制工作。

目前 Maven 是 Java 中最主流的構建工具,Gradle 現在也非常火,SpringBoot 現在使用 Gradle 編譯項目,但是 Gradle 比較復雜,沒有 Maven 普及率廣,可以說 Maven 對于 Java 程序員來說是必學的。

一句話總結:Maven 就像是 Java 項目的“管家”,它幫你把項目從源碼一步步變成可運行的軟件。

為什么需要 Maven

想象一下,你正在開發一個 Java 項目。這個項目需要用到很多其他庫(比如處理 JSON 的 Gson 庫、網絡請求的 HttpClient 庫),并且你還需要:

  • 編譯你的源代碼(.java 文件)。
  • 將編譯好的類文件(.class 文件)打包成 JAR 或 WAR 文件。
  • 運行單元測試來確保代碼沒有問題。
  • 生成項目文檔和報告。

在沒有 Maven 之前,開發者需要手動去下載各種 JAR 包,然后放到項目的 lib 文件夾下。如果依賴的庫又依賴其他庫(傳遞依賴),就會變得非常麻煩。

Maven 的出現解決了這些痛點:

  • 自動下載依賴,不再手動復制 JAR 包
  • 清晰的項目結構,統一的目錄規范
  • 標準化的構建流程,團隊協作更方便
  • 提供豐富的插件支持,比如單元測試、文檔生成、打包部署等

Maven 的核心功能

依賴管理(Dependency Management)

這是 Maven 最強大的功能之一。你只需要在項目的 pom.xml 文件中聲明你需要的依賴(比如 Gson),Maven 就會:

  • 自動從中心倉庫下載這些依賴,并緩存到你的本地倉庫。
  • 自動處理依賴的依賴(也叫傳遞性依賴)。例如,如果你依賴 A,而 A 又依賴 BC,Maven 會自動為你下載 BC

有了 Maven,你再也不需要手動管理一堆 JAR 包了,這大大簡化了項目配置和管理。

標準化項目結構

Maven 規定了一個標準的項目目錄結構。例如:

your-project/
├── src/
│   ├── main/
│   │   ├── java/         # 存放你的源代碼
│   │   └── resources/    # 存放配置文件、圖片等資源文件
│   └── test/
│       ├── java/         # 存放你的測試代碼
│       └── resources/    # 存放測試用到的資源文件
└── pom.xml               # 項目對象模型文件

這種結構讓不同團隊成員在接手新項目時能快速上手,因為它遵循了統一的約定。

標準化的構建生命周期

Maven 定義了一套標準的構建生命周期,它包括一系列階段(phase),比如:

  • validate: 驗證項目是否正確。
  • compile: 編譯源代碼。
  • test: 運行單元測試。
  • package: 將編譯好的代碼打包(通常是 JAR 或 WAR)。
  • install: 將包安裝到本地倉庫,供其他本地項目使用。
  • deploy: 將包部署到遠程倉庫。

你可以通過簡單的命令,如 mvn clean install,來執行整個生命周期,而不需要關心每個階段的底層細節。

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

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

相關文章

【MATLAB例程】三維組合導航,濾波使用EKF,帶嚴格的慣導推算、雅克比求解函數,圖像對比濾波前后的速度、位置、姿態

文章目錄程序介紹系統建模濾波框架仿真設置性能對比代碼優點運行結果MATLAB源代碼程序介紹 本程序實現了 三維狀態量的擴展卡爾曼濾波(EKF)組合導航仿真,采用嚴格的15維誤差狀態模型,狀態向量包括: x[pxpypzvxvyvz?θ…

港資企業在大陸,如何靠 SD-WAN 專線暢連香港?

在當前市場形勢下,港資企業在大陸的業務布局不斷拓展,企業間訪問香港總部系統以及香港員工到內陸出差時訪問相關系統,成為日常運營的高頻需求。然而,網絡問題卻常常阻礙業務的順暢開展,基于 SD-WAN 專線的到香港加速網…

并發編程——08 Semaphore源碼分析

1 概述Semaphore 是基于 AQS CAS 實現的,可根據構造參數的布爾值,選擇使用公平鎖,還是非公平鎖。Semaphore 默認使用非公平鎖;2 構造函數 // AQS的實現 private final Sync sync;// 默認使用非公平鎖 public Semaphore(int permi…

Java全棧開發面試實戰:從基礎到微服務的深度解析

Java全棧開發面試實戰:從基礎到微服務的深度解析 一、面試開場 面試官(中年工程師,穿著休閑但專業):你好,我是李工,今天來聊一下你的技術背景。你之前在XX科技做全棧開發,對吧&#…

CVPR深度學習論文創新合集拆解:模型訓練速度算提升

關注gongzhonghao【CVPR頂會精選】大語言模型擴散Transformer的深度融合,讓文本到圖像生成更精準、細節更豐富;同時,專家軌跡正則化深度強化學習在自動對焦中的穩定加速表現,也展示了深度學習與軌跡建模結合的潛力。這樣的組合正在…

【智能體】零代碼學習 Coze 智能體(2)創建智能體的完整步驟

歡迎關注【AGI使用教程】 專欄 【智能體】零代碼學習 Coze 智能體(1) 【智能體】零代碼學習 Coze 智能體(2) 【智能體】零代碼學習 Coze 智能體(1)1、登錄 Coze 平臺2、創建智能體3、智能體編排頁面4、編寫…

WPF和WinFrom區別

WPF 總結Windows Presentation Foundation (WPF) 是微軟開發的一個用于構建 Windows 桌面應用程序的用戶界面框架。它基于 .NET Framework,提供豐富的圖形、動畫和數據綁定功能,幫助開發者創建現代化、高性能的應用程序。以下是其核心要點總結&#xff1…

數據庫原理及應用_數據庫基礎_第3章數據庫編程_常用系統函數

前言 "<數據庫原理及應用>(MySQL版)".以下稱為"本書"中3.1.2節內容 引入 數據庫常用系統函數的分析.上一篇帖子分析了,數據庫函數需要看看能否被C語言函數替代 1.字符串函數 1)計算字符串字符數的函數和字符串長度的函數 語法: CHAR_LENGTH(str)…

回歸問題的損失函數

簡單來說&#xff0c;?在回歸問題中&#xff0c;最常用的損失函數是均方誤差&#xff08;MSE, Mean Squared Error&#xff09;和平均絕對誤差&#xff08;MAE, Mean Absolute Error&#xff09;?。它們衡量的都是模型預測值&#xff08;?&#xff09;與真實值&#xff08;y…

吳恩達機器學習(四)

一、神經網絡神經元模擬邏輯單元&#xff1a;神經網絡簡單模型&#xff1a;神經網絡中的前向傳播過程&#xff1a;依次計算激活項&#xff0c;從輸入層到隱藏層再到輸出層的過程。樣例&#xff1a;多元分類&#xff1a;

【重學 MySQL】九十三、MySQL的字符集的修改與底層原理詳解

【重學 MySQL】九十三、MySQL的字符集的修改與底層原理詳解一、字符集修改方法1. **配置文件修改**2. **SQL命令修改**3. **數據遷移方案**二、底層原理與注意事項1. **字符集與排序規則**2. **存儲與性能影響**3. **數據一致性風險**三、常見問題解決1. **亂碼問題**2. **性能…

pdf 轉圖片工具實現

一、安裝 sudo yum install poppler-utils pdftoppm -v pdftoppm -png -r 300 a.pdf /tmp/page 運行效果&#xff1a; PDF轉圖片工具 - 在線PDF轉PNG/JPG/TIFF轉換器 | 免費在線工具 后臺實現&#xff1a; using System.Diagnostics; using System.IO.Compression;namespac…

Zynq開發實踐(FPGA之輸入、輸出整合)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】fpga開發的時候習慣上先把功能拆分成若干個模塊。針對這些模塊&#xff0c;一個一、個實現好之后&#xff0c;再用wire連接即可。這一點有點像軟件編…

【Linux基礎】深入理解計算機啟動原理:MBR主引導記錄詳解

目錄 引言 1 硬盤分區初始化概述 1.1 為什么需要硬盤分區 1.2 硬盤分區格式的發展 1.3 分區初始化的基本流程 2 MBR詳解 2.1 MBR的定義與位置 2.2 MBR的結構詳解 2.3 分區表結構詳解 2.4 MBR的工作原理 2.5 MBR的引導程序 3 MBR的局限性 3.1 硬盤容量限制 3.2 分…

Linux 線程同步

線程同步 由于線程共享內存&#xff0c;訪問共享數據&#xff08;全局變量、堆內存&#xff09;必須進行同步&#xff0c;以防止競態條件&#xff08;Race Conditions&#xff09;導致數據不一致或程序崩潰。 子線程沒有獨立的地址空間&#xff0c;數據通常是共享的&#xff1b…

世界模型的典型框架與分類

1.概述 人類和動物智能的一個重要方面是我們對世界的內部模型。我們使用這個模型來預測我們的行為將如何影響我們的環境&#xff0c;預測未來的事件&#xff0c;并計劃復雜的行動序列以實現目標。當前大多數機器學習研究都集中在被動理解數據的模型上&#xff0c;例如圖像分類…

【Day 35】Linux-Mysql錯誤總結

&#xff08;一&#xff09;MySQL 基礎操作與服務故障類 連接層錯誤&#xff08;客戶端與服務器的連接建立失敗&#xff09; 解決 socket 路徑、文件存在性及服務可用性問題。 1、MySQL 客戶端連接失敗&#xff08;報錯 “Cant connect to local MySQL server throgh socket…

MYSQL速通(2/5)

六、多表查詢1、多表關系①、一對多&#xff08;多對一&#xff09;舉例&#xff1a;一個部門對多個員工實現&#xff1a;多的那邊建立外鍵&#xff0c;指向一的那邊的主鍵②、多對多舉例&#xff1a;一個學生可選多門課&#xff0c;一門課可被多個學生選實現&#xff1a;建立中…

CRM、ERP、HRP系統有啥區別?

要理解CRM、ERP、HRP系統&#xff0c;需先明確三者的核心定位&#xff08;聚焦客戶、企業全資源、特定領域資源&#xff09;&#xff0c;再從管理范圍、目標、用戶等維度區分。以下是詳細解析&#xff1a; 一、各系統核心定義與核心模塊 1. CRM系統&#xff1a;客戶關系管理系統…

【系統分析師】高分論文:論系統測試技術及應用

【摘要】 2022 年 7月&#xff0c;我作為項目負貴人&#xff0c;參加了某銀行的統計數據發布系統建設項目。該項目合同金額230 萬元&#xff0c;合同工期為半年。統計數據發布系統的主要目標是為該行建設一個企業級的數據統計、分析、發布平臺&#xff0c;實現定制化的數據應用…