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的下載請求提供服務