日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

maven复习 (进阶+高级)

發(fā)布時間:2024/1/8 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven复习 (进阶+高级) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)

  • groupId 公司或組織域名的倒序(倉庫:包名)
  • artifactId 項目名或模塊名(倉庫:項目名)
  • version 版本號(倉庫:版本號)
  • <groupId>com.czxy</groupId> <artifactId>maven_test2</artifactId> <version>1.0-SNAPSHOT</version>

    若安裝到倉庫,在倉庫的位置為:倉庫/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 的版本:

    <dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.0.RELEASE</version></dependency></dependencies></dependencyManagement>

    還可以把版本號提取出來,使用標簽設置成變量。

    如:

    <!--版本號--><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. 添加 標簽

    <modules><module>../A</module><module>../B</module><module>../C</module> </modules>

    這個 …/ 指什么?指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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。