Maven的作用:通過依賴管理實現構件化編程,項目構建,資訊管理。
Maven的安裝:
輸入命令mvn -v 查看是否安裝成功。
Maven座標(pom.xml設定檔)
Maven座標主要組成
groupId:定義當前Maven項目隸屬項目,包名
artifactId:定義實際項目中的一個模組,主類名
version:定義當前項目的目前的版本
packaging:定義該項目的打包方式,預設為jar包
name標籤:和類名相同
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.itcast.maven</groupId> <artifactId>HelloFriend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>HelloFriend</name> <dependencies> <dependency> <!--依賴座標--> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> <!--範圍--> </dependency> <dependency> <groupId>cn.itcast.maven</groupId> <artifactId>Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> </project>
依賴範圍(scope)
倉庫管理
用來統一儲存所有Maven共用構建的位置就是倉庫。
倉庫的分類
本地倉庫: ~/.m2/repository/ 每個使用者只有一個本地倉庫
遠程倉庫:
中央倉庫:Maven預設的遠程倉庫 http://repo1.maven.org/maven2
私服:是一種特殊的遠程倉庫,它是架設在區域網路內的倉庫
鏡像:用來替代中央倉庫,速度一般比中央倉庫快
Maven的生命週期
Maven生命週期就是為了對所有的構建過程進行抽象和統一。
包括項目清理,初始化,編譯,打包,測試,部署等幾乎所有構建步驟
Maven三大生命週期
clean:清理項目的
default:構建項目的
site:產生項目網站的
解決依賴衝突原則:
1、路徑最近者優先
2、路徑相同,第一聲明者優先
依賴聲明主要包含如下元素:<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency></dependencies>其中依賴範圍scope 用來控制依賴和編譯,測試,啟動並執行classpath的關係. 主要的是三種依賴關係如下:1.compile: 預設編譯依賴範圍。對於編譯,測試,運行三種classpath都有效2.test:測試依賴範圍。只對於測試classpath有效3.provided:已提供依賴範圍。對於編譯,測試的classpath都有效,但對於運行無效。因為由容器已經提供,例如servlet-api4.runtime:運行時提供。例如:jdbc驅動傳遞性依賴:見傳遞依賴圖傳遞性依賴原則:A-->BA-->C1.路徑最近者優先2.路徑相同,第一聲明者優先注意:1.dependencyManagement中定義的依賴子module不會共用2.dependencies中定義的依賴子module可以共用可選依賴不被傳遞依賴最佳化:mvn dependency:list