Maven核心總結
maven是什麼
maven是apache軟件基金會組織維護的一款自動化構建工具,用於java平臺的項目構建和依賴管理。
一個項目構建包括我們從完成代碼的編寫,到編譯後執行,並且啓動服務器的過程。
Web工程編譯過程
在實際項目中,我們需要整合第三放框架,java程序,jsp頁面,靜態資源,配置文件,各種jar包,,構建過程,就是我們把這個原料生產成一個可以運行的項目的過程。
構建過程的環節
其中的編譯,打包,部署,測試,我們讓他們自動完成,就是自動化構建。
Maven實現自動化構建的原理
Maven有什麼用
如圖,在項目構建過程中,我們不使用maven也可能完成一個項目。但是maven並不是可有可無的。
但是在實際開發過程中,我們在使用第三方jar包的時候,通常放進WEB-INF/lib目錄下,1.節約空間 通常每次創建一個工程之後,不同工程之間存在大量冗餘重複的的jar包。
使用maven之後,所有的工程在使用jar包時直接從本地倉庫調用,所有jar包只有一份,節約存儲空間。
2.jar包依賴關係 我們經常在引入某個jar包之後,發現項目出現問題,這是因爲,某些jar包在使用的時候必須依賴於其他jar包,但是我們不可能能記住不同jar包之間的依賴關係,也不能一個一個去引入,使用maven之後,自動將jar包之間的依賴全部導入,不必瞭解詳細的依賴關係。
3.獲取合適第三方jar包 java開發過程中使用的jar包種類繁多,我們不可能在開發一個項目的時候去很多不同網站找尋某一個jar包,maven像是一個目錄倉庫,他把所有的jar包統一收集,我們時候的時候可以直接去maven的官網下載,不去分開去不同地方下載。
4.maven的模塊依賴管理 在開發大型項目的時候,把一個項目分爲多個不同模塊,由不同人員管理,最終合併成完整的模塊,在這個過程中,我們需要控制不同模塊之間的相互調用和訪問,使用maven把控下層模塊可以被上層模塊調用。
Maven如何用
Maven本地默認倉庫是:~\.m2\repository
Maven約定的目錄結構
在開發過程中,約定>配置>編碼
Pom文件
Project Object Model:項目對象模型,把java工程的相關信息封裝爲對象作爲便於操作的模型,是maven的核心配置。
Maven座標介紹
查找jar包時
把三個gav連接起來去倉庫查找,每級目錄使用/分割
依賴
依賴除了上面的三個座標之外還有個依賴的範圍(一般省略)
Compile:編譯範圍依賴
Test :測試範圍依賴
Provided :部署範圍依賴
有效性總結
依賴性的傳遞
我們在編寫項目過程中會出現這種情況,當不同項目的依賴範圍不同時候,出現不能調用的情況,這個時候修改 依賴關係可以解決
例如
依賴的排除
當我們引入A的時候,A依賴於Bmaven 自動會爲我們引入B的依賴,但是不是我們自己選擇的版本,可能會出現不穩定的情況,我們可以引入A的時候排除B
同一框架的版本聲明
倉庫
1.本地倉庫 當前電腦上所有的maven工程服務
繼承機制
非compile範圍的依賴信息不能在依賴鏈中傳遞,所以有些工程需要單獨配置。但是配置的時候修改不同的版本號很麻煩。我們可以把依賴信息提取到父工程的模塊統一管理
子工程引用父工程
聚合
多個工程拆分爲模塊後,需要手動逐個安裝到倉庫後依賴才能生效,修改源碼後也需要手動進行clean操作,使用聚合可以批量處理
配置i聚合