Maven教程详细总结+学习路线
在使用Maven之前必須配置好Maven的環境變量及jdk 的環境變量:
如何篇配置Maven環境變量以及安裝eclipse中Maven的鏡像
一、為什么要使用Maven
目前技術在開發中存在的問題:
① 一個項目就是一個大工程
如果項目非常龐大,就不適合用package來劃分。最好是一個功能就是一個模塊,利于分工協作。借助Maven就可以將一個項目拆分成多個模塊。
②項目所需的jar包和jar包之間的依賴包必須自己提前準備好
如果是以不規范的方式下載的jar包,那么可能會帶來問題。借助于Maven,只需要安裝Maven的倉庫到本地即可,因為所有知名框架的jar包都保存在Maven的中央倉庫中,可以以一種規范的方式得到jar包。
③jar包都需要手動添加到lib目錄中
帶來的問題:同樣的jar包出現在每個工程中,一方面浪費空間,另外工程變得臃腫。借助Maven可以直接將jar包保存在倉庫中,有需要的工程可以通過配置pom.xml引入這個jar包,不需把jar包復制過來。
二、Maven是什么
Maven是一款專門服務于JAVA的自動化構建工具,并不能直接理解為我們找jar包的工具。那么自動化構建又是什么?
我把Web工程的構建分為了兩步:1.編譯 2.部署
1.編譯 源碼通過java編譯器編譯成字節碼文件的過程。
2.部署 一個B/S項目最終運行的并不是項目本身,而是這個動態web工程“編譯的結果”。就像一個java程序最終運行的并不是java的文件,而是編譯后的.class文件。
Maven自動化構建過程的具體步驟
①清除:清理上次的編譯結果
②編譯:將java文件編譯成class文件
③測試:調用Junit自動測試,測試完后打印測試的結果
④打包:java工程打jar包,web工程打成war包
⑤安裝:把不是maven庫中的,自己寫的工程,模塊之間有需要依賴的模塊,安裝到maven倉庫中。
⑥部署:將動態的web工程打成的war包部署到服務器中,使其可以運行。
以上步驟全部可以交由Maven通過maven命令去自動執行。
三、Maven怎樣使用
Maven的學習路線
①約定的目錄結構
②坐標的概念
③maven倉庫的概念
④依賴怎樣使用
- 依賴的傳遞性
- 系統選擇依賴時的就近原則
⑤繼承和聚合的概念和使用
①約定的目錄結構
若想使用Maven,那么就必須按照Maven約定的目錄結構創建項目(可在eclipse中new一個Maven項目直接形成約定的目錄結構)
-
為什么要遵守約定?
因為Maven負責整個工程的自動化構建,只有這樣Maven才能讀到工程里的文件,進行編譯、測試、打包等工作。 -
我們自己定義的東西如何讓框架知道?
①遵守框架的約定:比如要使用log4j的jar包,你得按照他的規定創建log4j.properties,一個字母一個字母的不能出錯。
②以配置的方式告訴框架:如在web.xml中配置spring,指明spring的配置文件的路徑。
②坐標的概念
概念:很簡單,就像x坐標和y坐標可以唯一標識一個平面中的點。一個maven中的坐標唯一標識一個Maven倉庫中的jar包。所以若想使用某個jar包,你只需知道他的坐標,配置在pom.xml中即可。
使用坐標必須按照maven的“gav”格式:
Ⅰ groupId:公司或組織的域名倒敘+項目名
Ⅱ artifactId:模塊名
<artifactId>Hello</artifactId>Ⅲ version:版本號
<version>1.0.0</version>比如spring-core的坐標:
<groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.0.RELEASE</version>③maven倉庫的概念
概念:倉庫=自動化構建所需的插件+所有知名框架的jar包+我們自己開發的maven模塊(使用mvn -stall進入倉庫)
倉庫的分類
- 本地倉庫:自己電腦上已經部署好的maven倉庫,需要去網上下載。
- 私服:搭建在局域網中,為局域網中的maven項目服務。
- 中央倉庫:搭建在Internet中,為世界上所有的maven項目服務。
④依賴如何使用(jar包如何從倉庫中引入?)
概念:在pom.xml配置依賴,就是給出坐標,引入jar包/其他模塊的過程
配置依賴:把jar包或模塊的坐標寫在dependency標簽中
maven解析配置好的依賴:maven到本地倉庫中查找被依賴的jar包的過程
-
依賴之間相互傳遞
如果現在有這三個模塊,其中HelloFriend需要使用到Hello模塊里的類,MakeFriends需要使用到HelloFriend模塊里的類。
依賴關系:MakeFriends—>HelloFriend—>Hello
若Hello模塊中配置了spring-core的jar包,那么在HelloFriend和MakeFriends中都會包含spring-core的運行時環境。即都會包含下圖中的jar包:
-
怎樣排除依賴
當我們接受到傳遞過來的依賴關系時,如果有不希望使用在當前工程中的jar包,我們可以排除他。排除的方式:
- 系統選擇依賴時的就近選擇
同樣是這三個模塊,依賴關系:MakeFriends—>HelloFriend—>Hello
如果Hello模塊中使用到log4j-4.0的版本,而HelloFriend模塊使用到log4j-4.9的版本,那么MakeFriends模塊中該如何選擇依賴過來的的版本?
答案:選擇HelloFriend模塊中log4j的版本。因為就近原則,MakeFriends到HelloFriend模塊是一步,到Hello模塊是兩步。
⑤繼承和聚合的使用
繼承的使用情景: 同樣是這三個模塊,依賴關系:MakeFriends—>HelloFriend—>Hello,但是由于test的依賴范圍不可傳遞,每一個模塊依賴的Junit的版本號不相同。那么怎么統一管理Junit的版本?
答案:此時就需要一位“父親”,將Junit的依賴統一提取到父親中,在子工程中的Junit依賴不聲明版本號,以父親設定的為準。
操作步驟:
① 創建一個Maven工程作為父工程,注意:打包方式為pom
②在父工程中統一管理Junit的版本,聲明為4.9
<dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency></dependencies></dependencyManagement>③“認爹儀式”,在子工程中聲明對父工程的引用
<parent><groupId>com.sms.maven</groupId><artifactId>Parent</artifactId><version>0.0.1-SNAPSHOT</version><!-- 以當前子工程為基準找到父工程pom.xml的路徑 --><relativePath>../Father/pom/xml</relativePath></parent>④去掉子工程的坐標和父工程的重復部分。
⑤去掉子工程中Junit依賴的版本號。
聚合的使用場景: 需要一件安裝所有模塊到倉庫時,使用聚合。
配置方式: 在總的聚合工程中,配置各個參與聚合的模塊。
總結
以上是生活随笔為你收集整理的Maven教程详细总结+学习路线的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JQuery方式执行ajax请求
- 下一篇: eclipse中配置Maven仓库