目錄
Maven坐標
坐標簡介?
主要組成
Maven依賴管理?
配置依賴?
依賴簡介
配置依賴
依賴傳遞
依賴傳遞簡介?
排除依賴
?依賴范圍
生命周期
生命周期簡介?
?執行指定生命周期
Maven坐標
坐標簡介?
Maven中的坐標是資源的唯一標識,通過該坐標可以唯一定位資源位置。
可以使用坐標來定義項目或引入項目中需要的依賴。
主要組成
groupld 定義當前Maven項目隸屬組織名稱?
artifactld 定義當前Maven項目名稱(通常是模塊名稱 例如order-service,goods-service)
version 定義當前項目版本號?
Maven依賴管理?
配置依賴?
依賴簡介
當前項目運行所需要的jar包,一個項目可以引入多個依賴
配置依賴
- ?在pom.xml中編寫<dependencies>標簽
- 在<dependencies>標簽中使用<dependency>引入坐標
- 定義坐標的groupld,artifactld,version
- 點擊刷新按鈕,引入新添加的坐標
<dependencies><!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>
</dependencies>
如果引入的依賴在本地倉庫不存在,將會連接遠程/中央倉庫,然后下載依賴。
如果不知道依賴的坐標信息,可以在中Maven倉庫官網中搜索
依賴傳遞
依賴傳遞簡介?
依賴具有傳遞性
直接依賴 在當前項目中通過依賴配置建立的依賴關系
間接依賴 被依賴的資源如果依賴其他資源,當前項目間接依賴其他資源
排除依賴
由于依賴傳遞的特性,如果我們需要b項目,但不需要b項目依賴的某個項目,可以通過如下方式排除該依賴
以排除projectA由于依賴projectB,而依賴的junit為例
?插入exclusions標簽,并在groupId,artifactId中填寫要排除的依賴,不需要指定版本
<dependency><groupId>com.itheima</groupId><artifactId>maven-projectB</artifactId><version>1.0-SNAPSHOT</version><exclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion></exclusions>
</dependency>
重新加載,發現projectA不再依賴于junit
?依賴范圍
依賴的jar包,默認情況下可以在任何地方使用。
可以通過<scope>標簽設置其作用范圍
作用范圍
主程序范圍有效(main文件夾范圍內)
測試程序范圍有效(test文件夾范圍內)
是否參與打包運行(package指令范圍內)
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope>
</dependency>
scope值 | 主程序 | 測試程序 | 打包(運行) | 范例 |
comile(默認) | ? ? √ | ? ? ?√ | ? ? ? √ | log4j |
test | ? ? × | ?? ? √ | ? ? ? × | junit |
provided | ?? ? √ | ?? ? √ | ? ? ? × | servlet-api |
runtime | ? ? ?× | ?? ? √ | ? ? ? √? | jdbc驅動 |
生命周期
生命周期簡介?
?Maven的生命周期就是為了對所有的maven項目構建過程進行抽象和統一
每套生命周期包含一些階段,階段是有順序的,后面的階段依賴于前面的階段
有三套生命周期 clean? default? site
在同一套生命周期中,當運行后面的階段時,前面的階段都會運行(運行install,clean不會運行因為他們不屬于同一套生命周期)
主要關注如下五個階段?
clean 移除上一次構建生成的元素
compile 編譯項目源代碼
test 使用合適的單元測試框架進行測試(junit)
package 將編譯后的文件打包,如jar,war
install 安裝項目到本地
?執行指定生命周期
- 在idea右側的maven工具欄選中對應的生命周期雙擊
- 在命令行中通過命令執行 如mvn compile