什么是Maven及如何配置國(guó)內(nèi)源實(shí)現(xiàn)自動(dòng)獲取jar包的操作
???1.Maven的了解
1.1什么是Maven
在官方的文檔中對(duì)于Maven的介紹是如下所示的:Welcome to Apache Maven – Maven
翻譯過來就是: Maven是?個(gè)項(xiàng)?管理?具?;赑OM(Project Object Model,項(xiàng)?對(duì)象模型)的概念,Maven可以通 過??段描述信息來管理項(xiàng)?的構(gòu)建,報(bào)告和?檔的項(xiàng)?管理?具軟件。
但是大白話就是:
Maven是?個(gè)項(xiàng)?管理?具, 通過pom.xml?件的配置獲取jar包,?不??動(dòng)去添加jar包
1.2創(chuàng)建一個(gè)Maven項(xiàng)目
那么接下來就跟著小編進(jìn)行操作吧~~~
注意:IDEA本?已經(jīng)集成了Maven, 我們可以直接使?, ?需安裝
步驟:File -> New -> Project
如下圖所示:
然后點(diǎn)擊創(chuàng)建即可,此時(shí)我們就成功創(chuàng)建了一個(gè)Maven項(xiàng)目;
1.3Maven的核心功能
1.項(xiàng)目構(gòu)建
Maven 提供了標(biāo)準(zhǔn)的,跨平臺(tái)(Linux, Windows, MacOS等)的?動(dòng)化項(xiàng)?構(gòu)建?式
當(dāng)我們開發(fā)了?個(gè)項(xiàng)?之后, 代碼需要經(jīng)過編譯, 測(cè)試, 打包, 發(fā)布等流程, 每次代碼的修改, 都需要經(jīng)過 這些流程, 如果代碼反復(fù)調(diào)試修改, 這個(gè)流程就需要反復(fù)進(jìn)?, 就顯得特別?煩,, ?Maven 給我們提供了 ?套簡(jiǎn)單的命令來完成項(xiàng)目的構(gòu)建
點(diǎn)擊右邊框的Maven按鍵:
然后點(diǎn)擊這里的打包按鈕,此時(shí)那么就進(jìn)行打包的操作了,具體控制臺(tái)的顯示如下:
并且,我們可以發(fā)現(xiàn)此時(shí)在我們的項(xiàng)目創(chuàng)建的欄目中可以看到,多了一個(gè)jar為后綴的項(xiàng)目,就是我們所打的jar包:
解釋:
打包就是把所有的class?件, 全部放在?起, 打成jar包或者war包 jar包和war包都是?種壓縮?件
jar包:就是把開發(fā)?員已經(jīng)寫好的?些代碼進(jìn)?打包. 打好的jar包就可以引?到其他項(xiàng)?中, 也可以直 接使?這些jar包中的類和屬性.
打成可執(zhí)?jar包:這樣的包就可以通過java -jar命令來執(zhí)?
war包:可以理解為是?個(gè)web項(xiàng)?,??是項(xiàng)?的所有東西, 通常?于?站
2.管理依賴
上?說到, Maven是?個(gè)項(xiàng)?管理?具, 通過pom.xml?件的配置獲取jar包,?不??動(dòng)去添加jar包 獲取的jar包, 其實(shí)就是依賴
依賴配置
在之前學(xué)習(xí)JDBC的時(shí)候,我們要添加mysql-connector-java的包.并且添加到項(xiàng)?中,此時(shí)才可以建立數(shù)據(jù)庫與idea的連接
此時(shí)我們使用Maven的時(shí)候,直接可以通過代碼操作直接導(dǎo)入jar包的操作,我們只需要在pom.xml中引?mysql-connector-java的依賴就可以了;
此時(shí)代碼如下所示:
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> </dependencies>
解釋:
在<dependencies>中部的所有代碼描述的就是建立依賴的坐標(biāo)
注意引入代碼后一定要記得刷新頁面;
Maven管理依賴的好處
使?maven的話, 就可以避免管理所需依賴的關(guān)系。我們只需要在pom?件中, 定義直接依賴就可以 了, 由于maven的依賴具有傳遞性,所以會(huì)?動(dòng)把所依賴的其他jar包也?起導(dǎo)?
如下圖所示:
解釋:
在Maven項(xiàng)目引入jar包A后,那么此時(shí)就會(huì)自動(dòng)的引入jar包A所依賴的jar包,那么此時(shí)就會(huì)自動(dòng)一如jar包B與jar包C;
依賴的排除
當(dāng)前階段我們需要依賴的庫并不多, 但隨著項(xiàng)?的越來越復(fù)雜, 庫之間的依賴關(guān)系也會(huì)變得越來越復(fù)雜. 如上圖中, 如果項(xiàng)?A不需要Jar B,也可以通過排除依賴的?式來實(shí)現(xiàn)
此時(shí)我們主動(dòng)使用代碼進(jìn)行依賴的排除:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>6.0.6</version> <!--排除依賴--> <exclusions> <exclusion> <artifactId>spring-jcl</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency>
但是在idea中有一個(gè)插件可以幫助執(zhí)行依賴的排除;
Maven helper插件
當(dāng)項(xiàng)??較復(fù)雜時(shí), 我們就會(huì)有Jar包沖突的問題, 這時(shí)候就需要去解決依賴沖突. 解決沖突之前, 需要先 找到?jīng)_突, 我們可以使?Maven Help插件來觀察包和包之間的依賴關(guān)系
下載方式:
File -> Settings ->Plugins -> 搜索'Maven Help' -> 找到對(duì)應(yīng)插件, 點(diǎn)擊Install 安裝即可, 安裝 后需要重啟下idea, 才能?效
圖示如下:
注意:下載后記得一定一定要進(jìn)行重啟的操作;
然后我們點(diǎn)擊下面的依賴選項(xiàng),可以看到依賴的關(guān)系:
此時(shí)我們可以通過手動(dòng)右擊鼠標(biāo),然后就可以進(jìn)行手動(dòng)的刪除這里的某些依賴;
???2.Maven的倉庫
我們通過短短??代碼, 就把依賴jar包放在了項(xiàng)??, 具體是如何做的呢?
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> </dependencies>
解釋:
這個(gè)代碼, 我們稱之為 "坐標(biāo)", 也就是唯?的. 在Maven中, 根據(jù) groupId、artifactId、version 的配置, 來唯?識(shí)別?個(gè) jar 包, 缺?不可. 當(dāng)我們?cè)趐om?件中配置完依賴之后, 點(diǎn)擊刷新, Maven會(huì)根據(jù)坐標(biāo)的配置, 去倉庫?尋找Jar包, 并把他 下載下來, 添加到項(xiàng)?中. 這個(gè)Jar包下載的地?就稱為倉庫
Maven倉庫分為兩?類: 本地倉庫和遠(yuǎn)程倉庫. 其中遠(yuǎn)程倉庫?分為中央倉庫, 私服 和其他公共庫
2.1本地倉庫
本地倉庫: ??計(jì)算機(jī)上的?個(gè)?錄(?來存儲(chǔ)jar包) 當(dāng)項(xiàng)?中引?對(duì)應(yīng)依賴jar包后,?先會(huì)查找本地倉庫中是否有對(duì)應(yīng)的jar包 • 如果有,則在項(xiàng)?直接引? • 如果沒有,則去中央倉庫中下載對(duì)應(yīng)的jar包到本地倉庫;
本地倉庫地址可以通過Maven配置查看:
注意:小編這里的本地倉庫已經(jīng)是通過了國(guó)內(nèi)源的配置的(下文有講到)
2.2中央倉庫
中央倉庫: maven 軟件中內(nèi)置?個(gè)遠(yuǎn)程倉庫地址,就是中央倉庫,服務(wù)于整個(gè)互聯(lián)?. 由 Maven 團(tuán)隊(duì) 維護(hù),全球唯?.
倉庫地址:https://repo1.maven.org/maven2/
可以通過https://mvnrepository.com 這個(gè)?站來查詢并下載
我們可以把??寫好的Jar包上傳到中央倉庫(具備?定的要求), 也可以從中央倉庫下載Jar包
例如:我們進(jìn)行jar包的查詢
這里由于是國(guó)外的網(wǎng)站,所以訪問比較慢,所以小編推薦使用加速器~~~
點(diǎn)擊進(jìn)入:
注意:一般來說點(diǎn)擊沒有漏洞的,并且這里的使用的人數(shù)盡可能多,這里點(diǎn)擊8.3.0~~~
往下面進(jìn)行翻,可以看到此時(shí)的依賴的代碼;
這就是我們添加進(jìn)入我們idea中的依賴的代碼源,就是我們jar包的坐標(biāo);
2.3私有服務(wù)器
私服: ?般由公司團(tuán)隊(duì)搭建的私有倉庫. 私服屬于某個(gè)公司,或者某個(gè)部?, 往往需要?定權(quán)限. 有了私服之后, Maven依賴下載的順序?發(fā)?了變化
如圖所示:
解釋:
1. 先從本地倉庫獲取, 本地倉庫存在, 則直接返回
2. 如果本地倉庫沒有, 就從私服請(qǐng)求, 私服存在該資源, 就直接返回
3. 如果私服上不存在該資源,則從中央倉庫下載, 中央倉庫不存在, 就報(bào)錯(cuò)了...
4. 如果中央倉庫中存在, 就先緩存在私服上之后,再緩存到本地倉庫?, 再為Maven的下載請(qǐng)求提供服 務(wù)
2.4Maven設(shè)置國(guó)內(nèi)源
因?yàn)橹醒雮}庫在國(guó)外, 所以下載起來會(huì)?較慢, 所以咱們選擇借助國(guó)內(nèi)?些公開的遠(yuǎn)程倉庫來下載資源 接下來介紹, 如何設(shè)置國(guó)內(nèi)源
國(guó)內(nèi)使?時(shí)會(huì)?較慢,我們可以更換為阿?云 的倉庫
打開settings.xml, 在 mirrors 節(jié)點(diǎn)上,添加內(nèi)容如下:
<mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>阿?云公共倉庫</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
然后將這個(gè)這個(gè)settings的xml文件添加到第一排這個(gè)文件路徑目錄上
小編這里是將這里的repository復(fù)制到新的路徑上面去了,所以這里的路徑就不是默認(rèn)的;
然后這里的setting的文件就是如下:
點(diǎn)擊進(jìn)入:小編這里使用的是sublime文本編輯器,所以具體的樣式就是如下所示的:
小編這里只截取了一小部分,所以就在你們的settings中添加就可以了,如果沒有就私信小編哦,小編為你解答~~~
???3.總結(jié)
本期總結(jié)了關(guān)于Maven在項(xiàng)目開發(fā)中的重要作用,從什么是Maven到理解它的核心功能,以及如何管理它的倉庫,進(jìn)行jar包坐標(biāo)的配置,以及如何設(shè)置國(guó)內(nèi)源都進(jìn)行了詳細(xì)的講述;
到此這篇關(guān)于什么是Maven,以及如何配置國(guó)內(nèi)源實(shí)現(xiàn)自動(dòng)獲取jar包的文章就介紹到這了,更多相關(guān)Maven自動(dòng)獲取jar包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)鼠標(biāo)隨機(jī)移動(dòng)效果的示例代碼
有的時(shí)候我們需要鼠標(biāo)一直滑動(dòng)的情況,為了節(jié)省時(shí)間,本文用Java語言寫了一個(gè)腳本,可以實(shí)現(xiàn)鼠標(biāo)隨機(jī)移動(dòng),感興趣的小伙伴可以了解一下2022-05-05Spring MVC學(xué)習(xí)教程之視圖深入解析
這篇文章主要給大家介紹了關(guān)于Spring MVC學(xué)習(xí)教程之視圖解析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或使用spring mvc具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-11-11Java WebSocket客戶端接收大量數(shù)據(jù)的三種方案
WebSocket是一種基于TCP協(xié)議的全雙工通信協(xié)議,它能夠在客戶端和服務(wù)器之間建立一個(gè)持久連接,實(shí)現(xiàn)實(shí)時(shí)的雙向數(shù)據(jù)傳輸,在實(shí)際應(yīng)用中,有時(shí)候我們需要處理大量的數(shù)據(jù),所以本文將介紹如何使用 Java WebSocket 客戶端接收大量數(shù)據(jù),并提供一些優(yōu)化方案2023-11-11詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式
這篇文章主要介紹了詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01Linux下Java開發(fā)環(huán)境搭建以及第一個(gè)HelloWorld
這篇文章主要介紹了Linux下Java開發(fā)環(huán)境搭建以及第一個(gè)HelloWorld的實(shí)現(xiàn)過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-09-09SpringBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的正確方法
什么叫優(yōu)雅停機(jī)?就是向應(yīng)用進(jìn)程發(fā)出停止指令之后,能保證正在執(zhí)行的業(yè)務(wù)操作不受影響,直到操作運(yùn)行完畢之后再停止服務(wù)。本文就來和大家聊聊SpringBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的正確姿勢(shì),希望對(duì)大家有所幫助2023-01-01