什么是Maven

Maven的概念

  • Maven是一個一鍵式的自動化的構建工具。
  • Maven 是 Apache 軟件基金會組織維護的一款自動化構建工具,專注服務于Java 平臺的項目構建和依賴管理。Maven 這個單詞的本意是:專家,內行。
  • Maven 是目前最流行的自動化構建工具,對于生產環境下多框架、多模塊整合開發有重要作用,Maven 是一款在大型項目開發過程中不可或缺的重要工具。

為什么要使用Maven

我們知道,項目開發不僅僅是寫寫代碼而已,期間會伴隨著各種必不可少的事情要做,例如:
  1. 我們需要引用各種 jar 包,尤其是比較大的工程,引用的 jar 包往往有幾十個乃至上百個,每個都要到不同的官網去下載,而且每次用到的 jar 包,都需要手動引入工程目錄,而且經常遇到各種讓人抓狂的 jar 包沖突,版本沖突,Maven可以自動下載jar包及依賴包添加到項目中,大大減輕了工作負擔。
  2. 我們開發的 Java 文件,都是需要將它編譯成二進制字節碼文件。好在這項工作可以由各種集成開發工具幫我們完成,Eclipse、IDEA 等都可以將代碼即時編譯。但有時候我們需要多個模塊同時編譯,就必須要借助于Maven工具了。
  3. 每個項目或模塊開發過程中都會有 bug,因此寫完了代碼,我們還要寫一些單元測試,然后一個個的運行來檢驗代碼質量,Maven提供了專門的測試插件來實施測試。
  4. 再優雅的代碼也是要出來賣的。我們后面還需要把代碼與各種配置文件、資源整合到一起,定型打包,如果是 web項目,還需要將之發布到服務器進行調用,這些都可以通過Maven輕松搞定。
總之,Maven是項目開發必不可少的工具。
類似自動化構建工具還有:Gant,Gradle。

項目構建過程

構建(build)是面向過程的(從開始到結尾的多個步驟),涉及到多個環節的協同工作。

構建過程的幾個主要環節:

  1. 清理:刪除以前的編譯結果,為重新編譯做好準備。
  2. 編譯:將Java源程序編譯為字節碼文件。
  3. 測試:針對項目中的關鍵點進行測試,確保項目在迭代開發過程中關鍵點的正確性。
  4. 報告:在每一次測試后以標準的格式記錄和展示測試結果。
  5. 打包:將一個包含諸多文件的工程封裝為一個壓縮文件用于安裝或部署。Java 工程對應 jar 包,Web 工程對應war包。
  6. 安裝:在Maven環境下特指將jar包安裝到本地倉庫中。這樣該項目就可以被其他的maven項目通過依賴的方式引入。
  7. 部署:將jar包部署到私服上。

Maven的兩大核心功能

項目構建

對項目進行編譯,測試,打包,部署等構建

依賴管理

對jar包的統一管理,Maven提供中央倉庫,私服,本地倉庫解決jar包的依賴和相關依賴的下載。
如下圖所示:包括藍、黃兩個部分分別對應著依賴關系和項目構建兩大核心功能。

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

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

相關文章

mongo客戶端操作mongodb記錄

背景: 長時間不操作mongodb數據庫,已經遺忘了命令,今天正好用到,溫習一下 直接上命令 #進入mongodb數據庫安裝bin目錄cd /opt/mongodb/bin#連接mongodb ./mongo #查看所有的數據庫 show dbs; #選擇數據庫 use xx; #查看表 show …

rocky9.4部署k8s群集v1.28.2版本(containerd)(純命令)

文章目錄 前言三個節點的主機名 所有節點操作主機名和ip解析關閉交換分區,關閉防火墻,關閉selinux更換阿里云yum源時間同步修改內核參數修改系統最大打開文件數開啟bridge網橋過濾,加載br_netfilter模塊,加載配置文件安裝ipset及i…

解析塔能科技:綠色低碳智慧節能一站式破局之匙

在能源問題日益凸顯的當下,綠色低碳、高效節能成為全球發展的重要課題。對各類節能方案進行深入剖析后,可以發現塔能科技的綠色低碳智慧節能一站式解決方案極具創新性與實用性,切實為眾多行業面臨的能源困境提供了有效解決路徑。 直面行業痛點…

精選面試題

1、js中set和map的作用和區別? 在 JavaScript 中,Set 和 Map 是兩種非常重要的集合類型 1、Set 是一種集合數據結構,用于存儲唯一值。它類似于數組,但成員的值都是唯一的,沒有重復的值。Set 中的值只能是唯一的,任何…

Flutter之路由和導航

目錄: 1、flutter路由和導航簡介2、路由的使用2.1、使用 Navigator2.2、使用命名路由2.3、使用路由器 3、應用中添加Tab導航4、頁面跳轉一個新頁面和回退5、傳遞數據到新頁面6、使用 RouteSettings 傳遞參數 1、flutter路由和導航簡介 Flutter 提供了一個完整的系統…

KMS工作原理及其安全性分析

在當今數字化時代,數據安全已經成為企業和個人最為關注的話題之一。隨著云計算和大數據的快速發展,如何安全地管理密鑰成為了一個重要的挑戰。KMS(Key Management Service,密鑰管理服務)作為一種專業的密鑰管理解決方案…

機器學習在網絡安全中的應用:守護數字世界的防線

一、引言 隨著信息技術的飛速發展,網絡安全問題日益凸顯,成為全球關注的焦點。傳統的網絡安全防護手段,如防火墻、入侵檢測系統(IDS)和防病毒軟件,雖然在一定程度上能夠抵御攻擊,但在面對復雜多…

Java在excel中導出動態曲線圖DEMO

1、環境 JDK8 POI 5.2.3 Springboot2.7 2、DEMO pom <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>commons…

Android APP 爬蟲操作

工具 夜神模擬器、charles、mitm 等 mitm的使用參考:Mitmproxy對Android進行抓包&#xff08;真機&#xff09;_mitmproxy 安卓-CSDN博客 charles的使用參考&#xff1a;【全網最詳細】手把手教學Charles抓包工具詳細自學教程&#xff0c;完整版安裝教程&#xff0c;詳細介紹…

Redis的LFU策略具體怎么工作?

Redis的LFU&#xff08;Least Frequently Used&#xff09;策略通過動態跟蹤鍵的訪問頻率實現淘汰決策&#xff0c;其核心工作邏輯可分為以下四個部分&#xff1a; 數據結構設計? 字段拆分?&#xff1a;每個Redis對象&#xff08;redisObject&#xff09;的lru字段&#xff…

Redis 及其在系統設計中的作用

什么是Redis Redis 是一個開源的內存數據結構存儲系統&#xff0c;可用作數據庫、緩存和消息代理。它因其快速的性能、靈活性和易用性而得到廣泛應用。 Redis 數據存儲類型 Redis 允許開發人員以各種數據結構&#xff08;例如字符串、位圖、位域、哈希、列表、集合、有序集合…

MySQL:如何用關系型數據庫征服NoSQL核心戰場?

寫在前面&#xff1a;當SQL遇見NoSQL的十年之變 2012年MongoDB掀起文檔數據庫革命時&#xff0c;開發者們不得不在靈活性與事務一致性之間做痛苦抉擇。十年后的今天&#xff0c;MySQL 8.0的JSON功能已實現&#xff1a; ? 二進制存儲效率超越傳統BLOB 40% ? 多值索引使JSON查…

Dart Flutter數據類型詳解 int double String bool list Map

目錄 字符串的幾種方式 bool值的判斷 List的定義方式 Map的定義方式 Dart判斷數據類型 (is 關鍵詞來判斷類型) Dart的數據類型詳解 int double String bool list Map 常用數據類型: Numbers(數值): int double Strings(字符串) String Booleans(布爾…

win11中wsl在自定義位置安裝ubuntu20.04 + ROS Noetic

wsl的安裝 環境自定義位置安裝指定ubuntu版本VsCodeROS備份與重載備份重新導入 常用命令參考文章 環境 搜索 啟用或關閉 Windows 功能 勾選這2個功能&#xff0c;然后重啟 自定義位置安裝指定ubuntu版本 從網上找到你所需要的相關wsl ubuntu版本的安裝包&#xff0c;一般直…

得物業務參數配置中心架構綜述

一、背景 現狀與痛點 在目前互聯網飛速發展的今天&#xff0c;企業對用人的要求越來越高&#xff0c;尤其是后端的開發同學大部分精力都要投入在對復雜需求的處理&#xff0c;以及代碼架構&#xff0c;穩定性的工作中&#xff0c;在對比下&#xff0c;簡單且重復的CRUD就顯得…

Nginx 二進制部署與 Docker 部署深度對比

一、核心概念解析 1. 二進制部署 通過包管理器&#xff08;如 apt/yum&#xff09;或源碼編譯安裝 Nginx&#xff0c;直接運行在宿主機上。其特點包括&#xff1a; 直接性&#xff1a;與操作系統深度綁定&#xff0c;直接使用系統庫和內核功能 。定制化&#xff1a;支持通過…

Rust 2025:內存安全革命與異步編程新紀元

Rust 2025 Edition通過區域內存管理、泛型關聯類型和零成本異步框架三大革新&#xff0c;重新定義系統級編程語言的能力邊界。本次升級不僅將內存安全驗證效率提升80%&#xff0c;更通過異步執行器架構優化實現微秒級任務切換。本文從編譯器原理、運行時機制、編程范式轉型三個…

std::unorderd_map 簡介

1. unorderd_map 簡介 1. unorderd_map 簡介 簡介1.1. 實現原理1.2. 函數1.3. 問題集 1.3.1. emplace、emplace_hint、insert 的區別 1.4. 參考鏈接 簡介 unordered_map 是 C 標準庫中的一個容器&#xff0c;它定義在 <unordered_map> 頭文件里。它借助哈希表來存儲鍵…

在線測試來料公差

UI 上圖 V1 上圖 V2 V3 Code import tkinter as tk from tkinter import messagebox, scrolledtext import socket import threading from datetime import datetime import os import logging from PIL import Image, ImageTk import subprocess# 定義文件夾路徑…

【優秀三方庫研讀】【C++基礎知識】odygrd/quill -- 折疊表達式

compute_encoded_size_and_cache_string_lengths 方法中這段代碼是一個C的折疊表達式&#xff08;fold expression&#xff09;的應用&#xff0c;用于計算多個參數編碼后的總大小。下面我將詳細解釋這段代碼的每個部分&#xff0c;并說明為什么這樣寫。 代碼如下&#xff1a; …