maven复习 (进阶+高级)
maven初級
一.manve是什么?
Manve是一個項目管理工具, pom文件 通過添加和依賴管理系統(tǒng), 可以通過一小段信息來管理項目的構(gòu)建, 報告和文檔的項目管理工具軟件 . 包含了一個項目對象模型, 一組標準集合, 一個項目的生命周期, 一個依賴管理系統(tǒng) ,和用來運行定義在生命周期階段中插入 目標的邏輯
manve的作用 (能解決什么問題)
- 項目設置遵循統(tǒng)一的規(guī)則
- 任意工程中共享
- 依賴管理包括自動更新
- 一個龐大且不斷增長的庫
- 可擴展. 能夠輕松編寫Java或腳本語言插件
- 只需很少或不需要額外的配置即時訪問新功能
- 構(gòu)建工程 , 管理jar包
- jar包依賴 編譯 測試 部署
maven的坐標
坐標:每一個 jar 包或 maven 項目在網(wǎng)絡上都有一個獨一無二的身份證
坐標(GAV)
若安裝到倉庫,在倉庫的位置為:倉庫/com/czxy/maven_test2/1.0-SNAPSHOT
Maven常見的命令
clean:清空 target 目錄
compile:生成 target 目錄
package:在 target 目錄生成 jar 包
install:將生成的 jar 包安裝到本地倉庫
Maven 高級
1.依賴沖突的解決方案
manve中的依賴關系:
直接依賴: A依賴B
間接依賴:A依賴B B依賴C ,A間接依賴C
問題:如果一個項目,同時依賴另外一個 jar 的不同版本,就可能導致 jar 沖突問題。這就是傳遞性依賴的
Jar 版本沖突問題。
測試代碼
<!--導入相關依賴包--><dependencies><!--引入spring-context,它所以來的包都會導入進來--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.2.4.RELEASE</version></dependency> </dependencies>當jar出現(xiàn)沖突時,有兩種做法
1)maven根據(jù)上面的兩個調(diào)解原則,自動處理
2)使用exclusions標簽手動,排除不需要的jar
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.2.4.RELEASE</version><!--直接排除--><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.2.RELEASE</version></dependency> </dependencies>dependencyManagement標簽的作用是什么?
面對眾多的依賴,有一種方法不用考慮依賴路徑、聲明優(yōu)化等因素可以采用直接鎖定版
本的方法確定依賴構(gòu)件的版本,版本鎖定后則不考慮依賴的聲明順序或依賴的路徑,以鎖定
的版本的為準添加到工程中,此方法在企業(yè)開發(fā)中常用。
如下的配置是鎖定了 spring-beans 和 spring-context 的版本:
還可以把版本號提取出來,使用標簽設置成變量。
如:
<!--版本號--><properties><spring.version>5.2.0.RELEASE</spring.version> </properties><dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency></dependencies></dependencyManagement>繼承和聚合
聚合
當有多個項目需要打包進倉庫時(其實就是當前項目依賴很多項目,所以當前項目執(zhí)行前,需要把這些依賴的項目全部install進本地倉庫),一個一個執(zhí)行install太麻煩,maven有一個方法可以多個項目一起install到本地倉庫。就是聚合。
例如:
有A,B,C三個項目需要install,新建一個用來聚合的項目aggreation(要保證aggreation和那三個項目是同一個GroupID。這句話的意思是如果這多個項目不是同一個GroupID,就不能用聚合了?)。
然后修改aggreation項目的pom文件:
1. 打包方式由jar修改為pom:
pom
2. 添加 標簽
這個 …/ 指什么?指maven的根目錄?
應該是當前項目pom的上一級目錄,其實就是所有項目存放的那個文件夾(也就是maven項目的根目錄),然后就通過/A /B /C 代表當前項目和這三個項目的相對路徑
然后對aggreation項目執(zhí)行install命令,則項目A,B,C就都打包到本地倉庫了。
執(zhí)行aggreation項目如test,A,B,C項目也都會執(zhí)行。即便ABC之間有依賴關系,如B依賴A,不用把A先執(zhí)行安裝,B同樣會被執(zhí)行。這是聚合的優(yōu)勢。
配置完聚合項目,只需要操作聚合項目,里面的項目都會被操作。不管這些項目之間是否有依賴。
繼承:
為什么要使用繼承:
pom.xml里面的配置,如果是多個項目,勢必會出現(xiàn)依賴和插件的重復配置。在面向?qū)ο笫澜缰?#xff0c;程序員可以使用類繼承在一定程度上消除重復,在Maven的世界中,也有類似的
機制能讓我們抽取出重復的配置,這就是pom的繼承
總結(jié)
以上是生活随笔為你收集整理的maven复习 (进阶+高级)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。