maven設(shè)計理念
- 讓代碼構(gòu)建變得簡單
- 約定優(yōu)于配置
maven倉庫
maven 三層倉庫
中央倉庫
存儲了大部分開源的依賴和插件睦擂,遠(yuǎn)程倉庫名字:central。遠(yuǎn)程倉庫
使用nexus大家的私服涩哟,可以用來存放二方庫,三方庫等驳糯。同時遠(yuǎn)程倉庫也可以訪問中央倉庫奄抽,或者三方庫。本地倉庫
本地電腦存儲的依賴包的地方叫搁,默認(rèn)路徑是~/.m2/repository
倉庫的加載順序
中央倉庫如果不在setting中顯示指定的話赔桌,會加載默認(rèn)的central倉庫。
maven鏡像
maven鏡像是為了加快maven包下載設(shè)立的中間代理渴逻,setting文件中配置了mirror會影響包的加載順序疾党。
如果配置了mirrorOf為對應(yīng)遠(yuǎn)程倉庫或者中央倉庫的地址鏡像,那么要加載對應(yīng)倉庫的時候會先加載對應(yīng)的maven鏡像惨奕。
如果配置mirrorOf為*雪位,那么加載遠(yuǎn)程倉庫或者中央倉庫的時候,都會默認(rèn)的去加載配置的鏡像倉庫梨撞。
完整加載順序
local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central
- setting_profile_repo 全局setting文件的profile設(shè)置
- pom_profile_repo pom文件里的profile設(shè)置
- pom_repositories pom里面直接配置repository雹洗,不帶profile進(jìn)行選擇
- settings_mirror 為全局setting文件鏡像香罐。
參考文檔:Maven 項目中依賴的搜索順序
maven生命周期
清潔(clean)生命周期
- 清潔(clean) 刪除以前構(gòu)建生成的所有文件,主要為刪除之前構(gòu)建的target目錄时肿,并不會影響本地倉庫
默認(rèn)(default)生命周期
- 校驗(validate) - 驗證項目是否正確庇茫,所有必要的信息可用
- 編譯(compile) - 編譯項目的源代碼
- 測試(test) - 使用合適的單元測試框架測試編譯的源代碼。這些測試不應(yīng)該要求代碼被打包或部署
- 打包(package) - 采用編譯的代碼螃成,并以其可分配格式(如JAR)進(jìn)行打包港令。
- 驗證(verify) - 對集成測試的結(jié)果執(zhí)行任何檢查,以確保滿足質(zhì)量標(biāo)準(zhǔn)
- 安裝(install) - 將軟件包安裝到本地倉庫中锈颗,用作本地其他項目的依賴項
- 部署(deploy) - 在構(gòu)建環(huán)境中完成捧毛,將最終的包復(fù)制到遠(yuǎn)程存儲庫以與其他開發(fā)人員和項目共享誉券。
站點(site)生命周期
- 網(wǎng)站(site) 生成項目的站點文檔
maven生命周期中的每個命令執(zhí)行時,都會調(diào)用前面的命令瘟芝。
maven插件
Maven 本質(zhì)上是一個插件框架遥昧,它的核心并不執(zhí)行任何具體的構(gòu)建任務(wù)覆醇,所有這些任務(wù)都交給插件來完成,每個任務(wù)對應(yīng)了一個插件目標(biāo)(goal)炭臭,每個插件會有一個或者多個目標(biāo)
-
常用打包插件
常用打包插件 - maven 默認(rèn)的 package 命令構(gòu)建的 jar 包中只包括了工程自身的 class 文件永脓,并沒有包括依賴的 jar 包
- maven-assembly-plugin插件會將當(dāng)前工程class和所依賴的jar打成一個可執(zhí)行包。
- maven-shade-plugin插件可以將當(dāng)前工程class和所依賴的jar包打成一個可執(zhí)行包鞋仍。
- maven-assembly-plugin與maven-shade-plugin區(qū)別:maven-assembly-plugin中如果有多個不同版本但是其他信息相同的jar包常摧,則只會選擇一個jar包打進(jìn)可執(zhí)行包,maven-shade-plugin則會將各個版本的jar中的一些信息進(jìn)行合并威创,防止各個版本不兼容的情況落午。
可參考:maven-assembly-plugin和maven-shade-plugin打包區(qū)別及弊端
maven常用插件:
常用 Maven 插件介紹(上)
常用 Maven 插件介紹(下)
maven快照機(jī)制
快照是一種特殊的版本,maven會定期的去獲取最新的快照版本肚豺,這個時間可以是幾分鐘溃斋,也可以是幾個小時,Maven 每次構(gòu)建都會在遠(yuǎn)程倉庫中檢查新的快照吸申,雖然maven會自動獲取最新快照梗劫,也可以在構(gòu)建的時候執(zhí)行:mvn clean package -U
強(qiáng)制更新