JavaEE-Maven

maven

Maven是?個項?管理?具, 通過pom.xml?件的配置獲取jar包,?不??動去添加jar包。

maven簡單, ?便, 提?我們的開發效率, 減少我們的開發Bug。

IDEA本?已經集成了Maven, 我們可以直接使?, ?需安裝。

創建maven項目

name是項目名

location是項目路徑

在build system選擇maven create創建就行。

依賴的添加和管理都在pom文件里

項目構建

當我們開發了?個項?之后, 代碼需要經過編譯, 測試, 打包, 發布等流程, 每次代碼的修改, 都需要經過這些流程, 如果代碼反復調試修改, 這個流程就需要反復進?, 就顯得特別?煩,, ?Maven 給我們提供了?套簡單的命令來完成項?的構建.

在右邊m點開就是maven的一些操作。

lifecycle是maven的生命周期,一些命令功能

package是打包

plugins是插件

打包就是把所有的class?件, 全部放在?起, 打成jar包或者war包

jar包和war包都是?種壓縮?件

jar包就是把開發?員已經寫好的?些代碼進?打包. 打好的jar包就可以引?到其他項?中, 也可以直接使?這些jar包中的類和屬性. 另外也可以打成可執?jar包, 這樣的包就可以通過java -jar命令來執?

war包可以理解為是?個web項?,??是項?的所有東西, 通常?于?站.

依賴管理

Maven是?個項?管理?具, 通過pom.xml?件的配置獲取jar包,?不??動去添加jar包

獲取的jar包, 其實就是依賴.

pom.xml 就是maven 的配置?件,?以描述項?的各種信息

依賴: 指當前項?運?所需要的jar包.

如果不適用maven,那么就需要手動將jar包引入到項目中,有了maven,只需要添加對應的依賴就可以將jar包自動引入。

每次修改pom文件都需要通過maven刷新

添加依賴后自動引入了對應的jar包,這個jar包是從本地倉庫取出來的,如果本地倉庫沒有,那么就會先從遠端倉庫下載到本地倉庫,在從本地倉庫取出來。

依賴傳遞

?如 A 依賴B, B依賴C, 那么 A項?引?B 的同時, 也需要引?C, 如果我們?動管理這個依賴, 這個過程就會?較?煩, 我們需要知道每個庫都依賴哪些庫, 以及這些依賴之間的版本是如何關聯的

但使?maven的話, 就可以避免管理所需依賴的關系。我們只需要在pom?件中, 定義直接依賴就可以了, 由于maven的依賴具有傳遞性,所以會?動把所依賴的其他jar包也?起導?

如上圖, 項?A 通過Maven 引? Jar A 時, 會?動引? Jar B 和Jar C.

Jar A 和項?B就是項?A的直接依賴.

Jar B, Jar C是間接依賴.

直接依賴:在當前項?中通過依賴配置建?的依賴關系間接依賴:被依賴的資源如果依賴其他資源,當前項?間接依賴其他資源

依賴排除

當前階段我們需要依賴的庫并不多, 但隨著項?的越來越復雜, 庫之間的依賴關系也會變得越來越復雜.

如上圖中, 如果項?A不需要Jar B,也可以通過排除依賴的?式來實現.

排除依賴:

指主動斷開依賴的資源。(被排除的資源?需指定版本)

可以看到mysql另外依賴著一個protobuf。

右鍵點擊protobuf使用exclude就可以排除這個依賴。

這就是排除依賴的格式,本來是要自己寫這個排除依賴的,這里是下載了一個叫maven help的插件,所以能夠通過上面的界面點擊exclude來自動生成排除依賴的語句。

插件下載

打開setting進入plugins,marketpiace查找下載插件,installed是已下載插件。

本地倉庫

本地倉庫: ??計算機上的?個?錄(?來存儲jar包)

當項?中引?對應依賴jar包后,?先會查找本地倉庫中是否有對應的jar包,如果有,則在項?直接引?

如果沒有,則去中央倉庫中下載對應的jar包到本地倉庫

打開setting當中的maven,Local?repository是本地倉庫的路徑

默認選這個,不行再選另一個

本地倉庫存儲路徑修改

打上勾

復制路徑,進入到本地倉庫

找到.m2文件,復制。

之后在想要作為新本地倉庫路徑的地址新建一個目錄,將.m2復制進去。

修改本地倉庫路徑

apply設置就可以了。

中央倉庫

中央倉庫: maven 軟件中內置?個遠程倉庫地址,就是中央倉庫,服務于整個互聯?. 由 Maven 團隊

這個倉庫就是管理著jar包的倉庫

維護,全球唯?.

倉庫地址:中央倉庫

可以通過https://mvnrepository.com 這個?站來查詢依賴并通過maven下載jar包

我們可以把??寫好的Jar包上傳到中央倉庫(具備?定的要求), 也可以從中央倉庫下載Jar包

查找jar包的坐標

首先訪問 https://mvnrepository.com/

進?查找, ?如mysql

選擇要添加的jar包

查看jar包的坐標,將坐標復制到pom.xml里面添加依賴就會自動下載

grouid是組織id,通常標識哪個組織,哪個公司開發的

第二個artifactID是項目id,到底是怎樣的一個jar包

第三個version是版本。

修改鏡像源

默認jar包的下載是去中央倉庫下載的,但是下載速度可能會慢一些,所以可以設置國內的鏡像源,加快下載的速度。

打上勾,去網上下載鏡像源,我這里用的是阿里的,將鏡像源下載到本地倉庫的.m2文件里

apply就好了。

基本上所有的配置都要修改兩次,一個是當前配置,一個是之后所有的項目配置。

?

一樣的再修改一次。

私有服務器

私服: ?般由公司團隊搭建的私有倉庫,不對外開放,只對公司內部進行開放使用。

私服屬于某個公司,或者某個部?, 往往需要?定權限.

有了私服之后, Maven依賴下載的順序?發?了變化

當Maven需要下載資源的時候1. 先從本地倉庫獲取, 本地倉庫存在, 則直接返回

如果本地倉庫沒有, 就從私服請求, 私服存在該資源, 就直接返回

如果私服上不存在該資源,則從中央倉庫下載, 中央倉庫不存在, 就報錯了...

?如果中央倉庫中存在, 就先緩存在私服上之后,再緩存到本地倉庫?, 再為Maven的下載請求提供服務

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

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

相關文章

使用 C/C++的OpenCV 實時播放火柴人愛心舞蹈動畫

使用 C/OpenCV 實時播放火柴人愛心舞蹈動畫 本文將介紹如何使用 C/OpenCV 庫實時創建一個動畫窗口:一個火柴人捧著愛心跳舞,同時另一個愛心從遠處飛來并逐漸變大。動畫會實時在 OpenCV 窗口中播放,直到用戶按下按鍵退出。 準備工作 確保你…

復現論文報錯解決

文章目錄 一、 The detected CUDA version (12.9) mismatches the version that was used to compile PyTorch (11.8)二、error -- unsupported GNU version! gcc versions later than 11 are not supported!三、Unknown encoder libx264四、下載速度太慢、無法遞歸下載項目 一…

Python 實現 Web 靜態服務器(HTTP 協議)

目錄 一、在本地啟動 HTTP 服務器1. Windows 下安裝 node.js1)下載安裝包2)配置環境變量3)安裝鏡像4)node.js 的常用命令 2. 安裝 http-server 服務3. 使用 http-server 開啟服務1)使用 http-server2)詳解 …

MPMA:Preference Manipulation Attack Against Model Context Protocol

概要 MCP作為提供給LLM作為工具調用的標準化協議被廣泛應用,但是MCP在安全方面還比較脆弱。本文提出了一種MPMA攻擊方法通過在工具的名字或描述中插入具有操控性的文字、短語來操控LLM選擇MCP server的過程。 不了解MCP的具體細節可以看看我寫的這篇文章MCP 場景…

Vim 替換命令完整學習筆記

Vim 替換命令完整學習筆記 文章目錄 Vim 替換命令完整學習筆記1. 核心概念2. 替換命令基本語法2.1 基本格式2.2 分隔符選擇2.3 范圍指定 3. 替換標志詳解3.1 基礎標志3.2 高級標志3.3 標志組合 4. 正則表達式在替換中的應用4.1 基礎正則表達式4.2 字符類和量詞4.3 分組和引用 5…

@RequestBody和@ResponseBody注解的作用是什么

@RequestBody和@ResponseBody注解的作用是什么 文章目錄 @RequestBody和@ResponseBody注解的作用是什么@RequestBody和@ResponseBody注解的作用是什么SpringMVC的請求與響應模型1. 請求的處理流程1.1 DispatcherServlet作為入口1.2 Handler處理器與Controller1.3 HandlerAdapte…

質因數分解_java

什么是質因數? 說的通俗一點就是,這個數既是因數,又是質數。但是1不是質因數(不是質數)。然后比如122*2*3,里邊的2,3都是質數,并且也是12的因數,所以2、3就是12的質因數。 因為本人很菜&#xf…

SpringDoc集成到Springboot

1.Maven引入jar包 <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.14</version> </dependency> 2.新建OpenApiConfig文件&#xff0c;代碼如下 package com.elan…

Memory Repair (五)

Compression Algorithm and Fuse Box Organization 通常情況下&#xff0c;這部分信息對于實現BISR&#xff08;內置自修復&#xff09;并非必需&#xff0c;但對于診斷問題可能有所幫助。 Compression and Fuse Box Organization Overview BISR controller采用的壓縮算法基于兩…

雙系統(win+linux)根目錄擴容(不掉GPU驅動)

先看效果&#xff0c;原來的根目錄僅50G&#xff0c;從/home節點分出擴容后變為250GB&#xff1b; 因為根分區是系統當前運行的文件系統&#xff0c;Linux系統啟動后會鎖定根分區&#xff0c;防止對其進行修改。這時使用系統內的工具&#xff08;如gparted&#xff09;調整根分…

oracle 23ai對象注釋新特性ANNOTATIONS

我們知道以前數據庫版本注釋方式是用COMMENT&#xff0c;如下 COMMENT ON COLUMN 表名.字段名 IS 字段注釋; oracle 23ai對象注釋有新增了ANNOTATIONS&#xff0c;比如創建如下表&#xff1a; SQL> create table test.t_user( id number, name varchar(200) ANNOTATIONS …

VMware 虛擬機開機自啟動配置指南

方法一&#xff1a;通過啟動文件夾設置&#xff08;簡單版&#xff09; 打開啟動文件夾&#xff1a; 按下 Win R 快捷鍵輸入 shell:startup 并回車 創建啟動腳本&#xff1a; 在打開的文件夾中右鍵新建一個文本文件命名為 vm_start.bat輸入以下內容&#xff1a; echo off &…

2025pmx文件怎么打開blender和虛幻

pmx文件怎么打開blender 前言 一坑接一坑。 意思很簡單&#xff0c;就是給Blender、3dsmax裝插件&#xff0c;然后就可以打開了。但是報錯就要多走很多錯路。 記錄一下。 內容 參考文章&#xff1a;https://blog.csdn.net/c858845275/article/details/144180555 我的Ble…

Kotlin基礎語法五

繼承與重載的open關鍵字 KT所有的類&#xff0c;默認是final修飾的&#xff0c;不能被繼承&#xff0c;和Java相反 open&#xff1a;移除final修飾 類型轉換 open class Person2(private val name: String) {fun showName() "父類 的姓名是【$name】"// KT所有的…

MySQL數據庫:關系型數據庫的基石

文章目錄 每日一句正能量前言一、MySQL簡介&#xff08;一&#xff09;什么是MySQL&#xff1f;&#xff08;二&#xff09;MySQL的歷史 二、MySQL的特點&#xff08;一&#xff09;開源與免費&#xff08;二&#xff09;高性能&#xff08;三&#xff09;跨平臺支持&#xff0…

【kafka】Golang實現分布式Masscan任務調度系統

要求: 輸出兩個程序,一個命令行程序(命令行參數用flag)和一個服務端程序。 命令行程序支持通過命令行參數配置下發IP或IP段、端口、掃描帶寬,然后將消息推送到kafka里面。 服務端程序: 從kafka消費者接收掃描任務信息通過調用masscan啟動探測任務,獲取進度和結果信息,…

ARM 和 x86_64是什么關系

什么是 ARM 和 x86_64&#xff1f; 它們都是 CPU 指令集架構&#xff08;ISA&#xff09; 指令集架構&#xff08;Instruction Set Architecture&#xff09;就是&#xff1a; CPU 能夠理解和執行的“語言”和“命令格式”。 類比解釋&#xff1a;指令集就像“語言” 類比對…

nginx配置中有無‘‘/’’的區別

在Nginx配置中&#xff0c;location指令末尾的斜杠/和proxy_pass目標地址末尾的斜杠/組合使用會產生顯著差異。以下是四種組合的區別詳解&#xff1a; ??核心區別對比表?? 配置方案匹配規則請求URI傳遞邏輯實際轉發效果示例location /api/ proxy_pass ...701/僅匹配/api/…

系統安全之身份認證

本篇我們對常用的身份認證協議做簡要的梳理&#xff0c;包括主流的 HTTP 相關認證協議以及證書密鑰對、新興的 WebAuthn 認證。 HTTP 協議認證 RFC 7235 中定義了 HTTP 協議的認證框架&#xff0c;要求在支持 HTTP 協議的服務器&#xff0c;如果訪問服務的身份驗證失敗&#…

部署http服務

使用flask搭建一個http服務&#xff0c;能夠通過本地的另外一個終端訪問對應接口&#xff0c;拿到服務端的計算結果 服務端&#xff1a; 創建一個test_http_dtw.py并運行 from flask import Flask, request, jsonifyapp Flask(__name__)# 示例分析函數 def analysis(data):…