首頁 > 軟體

淺談一下maven優缺點及使用和特點

2023-03-31 06:01:31

1.什麼是maven:

maven是Java平臺下的一款專案構建和依賴管理的自動化管理工具。

專案構建:將我們的原始碼、組態檔變成可執行的war包或者jar包。

依賴管理:專案需要正常執行,必須依賴一些第三方的jar包,對於這些第三方的jar包的管理,可以認為就是依賴的管理。

Maven的作用主要體現在兩個詞上面:專案和管理。專案管理從技術上來理解,就是 Maven 為專案提供了一種讓團隊能夠更科學地管理、構建專案的手段。我們可以用組態檔的方式對專案的描述、名稱、專案版本號、專案依賴等資訊進行描述,使我們的專案結構更加清晰。

  並且,有一些專案需要依賴一些第三方專案的模組或元件來完成,那麼 Maven 則提供了一種 Maven倉庫 的概念。將這些依賴全部放到 Maven倉庫中,其他專案如果想要使用這些依賴,直接到倉庫中取即可,避免了到開源網站下載 jar 包資源的步驟。

Maven的優點:

1、原來的專案中需要的jar包必須手動“複製”、”貼上” 到WEB-INF/lib 專案下,而藉助Maven,可以將jar包僅僅儲存在“倉庫”中,有需要使用的工程只需要“參照”這個檔案,並不需要重複複製到工程中。

2、原來的專案中所需要的jar包都是提前下載好的,而Maven在聯網狀態下會自動下載所需要的jar包。首先在本地倉庫中找,找不到就在網上進行下載。

3、原來的專案中一個jar包所依賴的其他jar包必須手動導進來,而Maven會自動將被依賴的jar包導進來。

4、原來的專案一個專案就是一個工程,而藉助Maven可以將一個專案拆分成多個工程。

Maven的缺點:

1.由於需要下載,匯入等,導致載入緩慢,或者出現錯誤,和不穩定

2.缺少對Maven的檔案描述(網上一大堆,但是沒有標準)

3.中央儲存庫中的後設資料不佳

4.POM.xml做為專案後設資料的來源

maven常見的指令:

  • mvn archetype:generate :建立 Maven 專案
  • mvn compile :編譯原始碼
  • mvn test-compile :編譯測試程式碼
  • mvn test : 執行應用程式中的單元測試
  • mvn site : 生成專案相關資訊的網站
  • mvn clean :清除目標目錄中的生成結果
  • mvn package : 依據專案生成 jar 檔案
  • mvn install :在本地 Repository 中安裝 jar
  • mvn deploy:將jar包釋出到遠端倉庫
  • mvn eclipse:eclipse :生成 Eclipse 專案檔案

maven依賴範圍

  • compile:編譯範圍,指 A 在編譯時依賴 B,此範圍為預設依賴範圍。編譯範圍的依賴會用在 編譯、測試、執行,由於執行時需要所以編譯範圍的依賴會被打包。
  • provided:provided 依賴只有在當 JDK 或者一個容器已提供該依賴之後才使用, provided 依賴在編譯和測試時需要,在執行時不需要,打包:比如:servlet-api,jsp-api 被 tomcat 容器提供。
  • runtime:runtime 依賴在執行和測試系統的時候需要,但在編譯的時候不需要。比如:jdbc 的驅動包。由於執行時需要所以 runtime 範圍的依賴會被打包。
  • test:test 範圍依賴 在編譯和執行時都不需要,它們只有在測試編譯和測試執行階段可用, 比如:junit。由於執行時不需要所以 test範圍依賴不會被打包。
  • system:system 範圍依賴與 provided 類似,但是你必須顯式的提供一個對於本地系統中 JAR 檔案的路徑,需要指定 systemPath 磁碟路徑,system依賴不推薦使用。

maven四大特性:

1.第一大特性:

依賴管理系統 maven為java世界引入了一個新的依賴管理系統jar包管理jar升級時修改組態檔即可,在java世界中,可以用groupid,artifactid,version組成的Coordination(做標)唯一標識一個依賴。

 任何基於Maven構建的專案自身也必須定義這三項屬性,生成的包可以是jar包,也可以是war包或者jar包。

①groupId:定義當前Maven專案隸屬的實際專案--公司名稱。

②artifactId:該元素定義實際專案中的一個Maven模組--專案名。推薦的做法是使用實際專案名稱作為artifactId的字首。比如:spring-bean,spring-webmvc等。

③version:該元素定義maven專案當前所處的版本。

2.第二大特性:

多模組構建 專案複查時dao  service  controller  層分離將一個專案分解為多個模組已經是很通用的一種方式。

在maven中需要定義一個parent  POM作為一組module的聚合POM,在該POM中可以<modules>標籤來定義一組子模組,parent POM不會有什麼實際構建產生。而parent POM中的build設定以及依賴設定都會自動繼承給子module。

3.第三大特性:

一致的專案構建 主要解決了我們在idea中和eclipse中建立的專案,目錄可能不一樣,但是如果使用了maven後,我們建立的專案目錄都是一樣的。 Maven在設計之初的理念就是Conversion over configuration(約定大於設定) ,其制定了一套專案目錄結構作為標準的java專案結構,解決不同ide帶來的檔案目錄不一致問題。

4.第四大特性:

一致的構建模型和外掛機制如果我們需要tomcat伺服器的時候,我們就把tomcat伺服器的引進來。

到此這篇關於淺談一下maven優缺點及使用和特點的文章就介紹到這了,更多相關maven優缺點及使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com