Maven應用相關

Maven應用相關說明

做用

項目管理工具,對項目進行構建依賴管理服務器

Maven POM

POM (Project Object Model) 項目對象模型,Maven工程的基本單元框架

POM指定配置
  • 項目描述
  • 項目依賴
  • 項目插件
  • 項目構建的Profile

Maven構建的生命週期

  • 驗證 validate:驗證項目的配置是否正確
  • 編輯 complier:編譯源代碼
  • 測試 test:使用適當的測試框架測試
  • 包裝 package:對已編譯的文件打包
  • 檢查 verify:對集成測試的結果檢查,以保證質量達標
  • 安裝 install:安裝打包的項目到本地倉庫,以供其它項目使用
  • 部署 deploy:拷貝最終的工程包到遠程倉庫中,以共享給其它開發人員使用

Maven倉庫

  • 本地倉庫 本地機器.m2指向的文件目錄
  • 遠程倉庫 遠程服務器的maven服務器,包maven倉庫和其它私服

Maven 依賴

scope maven的scope決定依賴的包是否加入本工程的classpath下
依賴範圍scope 編譯classpath 測試classpath 運行classpath 傳遞性
complie Y Y Y Y
test - Y - -
provider Y Y - -
runtime - Y Y Y
system Y Y - Y
詳解
complie : 默認,強依賴,打包的時候會包含
test : 僅僅參與測試相關的編譯、運行
provider : 打包的時候不會包含,使用時須要使用方提供相關設施(或者說是依賴),能夠理解爲編譯後打包的時候excluded出去了
runtime : 無需參與編譯,終端項目中與complie的區別:跳過編譯,常與optional搭配使用
system:與provider相似,區別在與設施提供方不是maven倉庫,而是從本地文件系統中獲取。必定要配合systemPath屬性使用(能夠理解爲從外部拷貝依賴到項目中)

optional 與 exclutions

相同點:都是排除jar是依賴
不一樣點:
  • optional:該依賴只能在當前項目中使用,不能傳遞到引用該項目的父項目,如父項目須要使用則須要主動依賴
  • exclutions:主動排除子項目傳遞的依賴

重複依賴的兩大原則

最短路徑原則

好比以下兩個版本的依賴關係:
V1版本:A -> B -> C -> D
V2版本:A ->M -> N -> G -> D
這個時候出現了兩個版本的D,依據最短路徑原則,V1版本依賴D的路徑長度爲3,V2版本依賴D的路徑長度爲4,因此選擇V1版本的D依賴maven

聲明優先原則

好比以下兩個版本的依賴關係:
V1版本:A -> B -> C
V2版本:A -> D -> C
這個時候兩個版本的最短路徑是同樣長,最短路徑原則就會失效,這個時候maven的解決方案是在POM中的優先聲明原則,誰先聲明就優先使用誰的版本ide

相關文章
相關標籤/搜索