Maven的原理和使用


一、Maven能做什么

 1、假設我們有10個項目,都需要引入spring core模塊,那么需要十份重復的Spring Core.jar和commons-logging.jar

   使用Maven:maven使用本地倉庫存儲的jar,所有項目都會公用倉庫中的同一分jar

 2、Spring Core.jar必須同時引入版本兼容的commons-log.jar,否則會報錯

   使用Maven:maven不需要關心這些問題,會自動引入Spring core.jar所需的兼容版本jar

3、如果一個項目里面有個100個jar,不知道那些jar是彼此關聯的,那些是互相排斥的,當需要升級版本時,增加或刪除一些jar,很容易出各種問題

   使用Maven:maven升級jar,只需要把版本3.x改成4.x,他會自動解決那些問題

 

 概括的說:Maven是一個項目管理和綜合工具。Maven簡化和標准化項目建設過程。處理編譯,分配,文檔,團隊協作和其他任務的無縫連接。Maven增加可重復性並負責建立相關的業務。

二、Maven的安裝和設置

1、安裝之前,首先確定你已經安裝了JDK

2、下載地址:http://maven.apache.org/download.cgi

3、將安裝文件解壓到你指定的目錄中

4、配置環境變量,變量名M2_HOME,變量值為Maven的安裝目錄,修改path值,在變量值后面加上bin,例如:%M2_HOME%/bin

5、測試maven環境,執行命令:mvn -v 

三、從Maven模板創建一個項目

 1、整個項目的項目目錄結構會自動創建

 

 2、所有的源代碼放在文件夾/src/main/java/,所有的單元測試代碼放入:/src/test/java/

 3、附加的一個標准的pom.xml被生成,這個Pom文件類似於Ant build.xml文件,它描述了整個項目的信息,一切“從目錄結構”,項目的插件,項目依賴,如何構建這個項目等。

 4、Maven各個目錄的解釋說明

5、pom的基本信息

 

 6、pom的依賴關系

 

 

7、pom詳解

  a、添加插件

 

 b、去除依賴

 

 c、繼承

 

 d、聚合(通過一個大的項目來整合各個小的模塊)

 

 e、指定在Build時需要的資源文件(resource)

 四、Maven的生命周期

1、clear:移除上一次構建生成的文件

2、compile:編輯項目的源代碼

3、test:使用單元測試框架進行測試,測試代碼不會被打包或者部署

4、package:接受編譯好的代碼,打包成可發布的格式

5、install:將包安裝到maven本地倉庫,供本地其他maven項目使用

6、deploy:將最終的包發布到遠程倉庫,供其他開發人員和maven項目使用。

7、site:生成項目的站點文檔

五、Maven倉庫

 

 在Maven中,任何一個依賴、插件或者項目構建的輸出,都可以稱之為構建。

Maven在某個統一的位置存儲所有項目的共享的構件,這個統一的位置,我們就稱之為倉庫。

 任何一個構件都有其唯一坐標,根據這個坐標可以定義其在倉庫中的唯一路徑,這就是Maven倉庫的布局方式。

如:groupId=org.testing

       artfactId=testing

       version=5.8

  生成路徑:org/testing/testing/5.8/testing-5.8-jdk15.jar

六、Maven的依賴

 1、依賴的傳遞性

  一個復雜的項目會包含很多依賴,也有可能包含依賴其他構件的依賴。這個是Maven的強大特征之一,它支持了傳遞性依賴。

  依賴原則:路徑優先原則,第一聲明原則。

 解決依賴問題:

通過調整dependency的順序來解決:那個依賴的順訊在前面就依賴那個

自己添加一個denpendeny來解決:因為該路徑是最小的

通過exclusions元素排除不想要的傳遞性依賴。

2、Version解釋

 snapshot版本表示不穩定,處於開發中的版本,即快照版本

 release:表示趨於穩定,當前停止更新,可以用於發行的斑斑。

場景:協同開發時,如果A依賴B,由於B頻繁更新,B應該使用SNAPSHOT來標識自己。

3、依賴范圍Scope

compile(默認):編譯范圍的依賴,它在編譯和打包的時候都會把該依賴打包進去

test:測試依賴范圍,它在編譯和打包的時候不會把該依賴打包進去

provided:在編譯和測試范圍有效,最后生成war包時不會打包進去

rumtime:運行時依賴,編譯的時候不依賴

import:導入依賴范圍

system:系統依賴范圍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM