1)該文章學習借鑑於金昊霖大佬的maven詳解。
2)博主是萌新上路,文中如有不當之處,請各位大佬指出,共同進步,謝謝。
Maven是Apache下的頂級的開源專案(頂級就是指Apache下的專案都是以此爲基礎開發的),專案管理工具,管理java專案。
特點:
POM物件模型,每個maven工程中都有一個pom.xml檔案,定義工程所依賴的jar包、本工程的座標、打包執行方式。
Maven通過座標對專案工程所依賴的jar包統一規範管理。
清理、初始化、編譯、測試、報告 、打包、部署、站點生成。
強調: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(具體版本看下載的檔案)。
本地倉庫設定
建立本地倉庫
在你想要儲存的地方建立資料夾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詳解。
人生就是在不斷地學習中前進,不氣餒於一時的落後,找準目標,選對方向,加油幹!古之立大事者,不惟有超世之才,亦必有堅韌不拔之志!以夢爲馬,不負韶華,豈能盡如人意,但求無愧己心!