Java:初始Maven

2020-08-08 18:07:06

宣告

1)該文章學習借鑑於金昊霖大佬maven詳解

2)博主是萌新上路,文中如有不當之處,請各位大佬指出,共同進步,謝謝。

概念

Maven是Apache下的頂級的開源專案(頂級就是指Apache下的專案都是以此爲基礎開發的),專案管理工具,管理java專案。

特點:

  • 1、專案物件模型 (Project Object Model)

POM物件模型,每個maven工程中都有一個pom.xml檔案,定義工程所依賴的jar包、本工程的座標、打包執行方式。

  • 2、依賴管理系統(基礎核心)

Maven通過座標對專案工程所依賴的jar包統一規範管理。

  • 3、Maven定義一套專案生命週期

清理、初始化、編譯、測試、報告 、打包、部署、站點生成。

  • 4、一組標準集合

強調:maven工程有自己標準的工程目錄結構、定義座標有標準。

  • 5、Maven 管理專案生命週期過程都是基於外掛所完成

原理

在这里插入图片描述
1)中央倉庫
中央倉庫,就是遠端倉庫,全世界只有一個,倉庫中jar包由專業團隊(Maven團隊)統一維護。而它的伺服器就在我們的「腳下」,地球的另一端——英國。

2)私服
區域網中的倉庫,一般是在公司內部架設一臺私服,其它公司架設一臺倉庫,對外公開。

3)本地倉庫
原生的倉庫,它會儲存你曾經從Maven倉庫中獲取的所有jar包依賴,相當於快取。

Maven第一次會從遠端倉庫(網際網路)去下載jar 包,將jar包存在本地倉庫(在程式設計師的電腦上)。第二次會先從本地倉庫找,如果找不到纔會去遠端倉庫找。

4)映象
由於中央倉庫伺服器離我們太遠,再加上存取量大,所以直接重中央倉庫下載往往會很慢,甚至下載失敗。所以映象就隨之而生,所謂映象,其實就是中央倉庫的複製版,一般選擇國內的映象,這樣會使jar下載速率大大提升。比如阿裡的映象倉庫

5)執行機制 機製
當你專案需要新增依賴時,Maven首先會去你的本地倉庫找jar包,如果沒有則去區域網中的私服倉庫找,如果還沒有,那就去中央倉庫或者映象中下載(至於去哪個要看你的設定,具體設定後面會講)。

優勢

1)一個專案就是一個工程

如果專案非常龐大,就不適合使用package來劃分模組,最好是每一個模組對應一個工程,利於分工共同作業。

藉助於Maven就可以將一個專案拆分成多個工程。

2)專案中使用jar包,需要「複製」、「貼上」專案的lib中

同樣的jar包重複的出現在不同的專案工程中,你需要做不停的複製貼上的重複工作。

藉助於Maven,可以將jar包儲存在「倉庫」中,不管在哪個專案只要使用參照即可就行。

3)jar包需要的時候每次都要自己準備好或到官網下載

藉助於Maven我們可以使用統一的規範方式下載jar包。

4)jar包版本不一致的風險

不同的專案在使用jar包的時候,有可能會導致各個專案的jar包版本不一致,導致未執行錯誤。

藉助於Maven,所有的jar包都放在「倉庫」中,所有的專案都使用倉庫的一份jar包。

5)一個jar包依賴其他的jar包需要自己手動的加入到專案中

FileUpload元件->IO元件,commons-fileupload-1.3.jar依賴於commons-io-2.0.1.jar。

極大的浪費了我們匯入包的時間成本,也極大的增加了學習成本。

藉助於Maven,它會自動的將依賴的jar包匯入進來。

環境搭建

Mave下載
可以到Maven的官網下載。

個人建議將下載的壓縮包解壓到IntelliJ IDEA資料夾中的plugins子檔案裡,以便歸類尋找。

該該根目錄會有下面 下麪的資料夾apache-maven-3.6.3(具體版本看下載的檔案)。
maven安装包
本地倉庫設定

建立本地倉庫

在你想要儲存的地方建立資料夾repository表示本地倉庫位置。(推薦D槽或者E槽,一般不選C槽)

設定本地倉庫

開啓Maven的安裝目錄中conf/ settings.xml檔案(以記事本方式開啓即可),在這裏設定本地倉庫:
在这里插入图片描述
這裏的意思是設定本地倉庫的目錄爲E:\Javarepository。

如果你不想下載jar包太慢或者下載失敗的話你最好找到

<mirrors></mirrors>

這個標籤,在裏面加上

<!-- 阿裡雲映象 -->
	 <mirror> 
	 <id>alimaven</id> 
	 <name>aliyun maven</name> 
	 <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> 
	 <mirrorOf>central</mirrorOf> 
	 </mirror>
	 
	 <!-- maven官方映象 -->
	 <mirror>
	 <id>mirrorId</id>
	 <mirrorOf>central</mirrorOf>
	 <name>Human Readable Name </name>
	 <url>http://repo1.maven.org/maven2/</url>
	 </mirror>
	 
	 <!-- junit映象地址 -->
	 <mirror> 
	 <id>junit</id> 
	 <name>junit Address/</name> 
	 <url>http://jcenter.bintray.com/</url> 
	 <mirrorOf>central</mirrorOf> 
	 </mirror>

如下:
在这里插入图片描述
這樣我們就可以優先重映象倉庫中下載!

總結

通過金昊霖大佬的部落格和講解,對Maven也有了個初步的認識,在往後的學習生活中也會融會貫通,這裏就不寫Maven的專案結構了,因爲本人也不太瞭解,大家想要更加詳細的瞭解Maven,請點選maven詳解

人生就是在不斷地學習中前進,不氣餒於一時的落後,找準目標,選對方向,加油幹!古之立大事者,不惟有超世之才,亦必有堅韌不拔之志!以夢爲馬,不負韶華,豈能盡如人意,但求無愧己心!