Maven基礎
一. Maven是什么?
- 本質是一個項目管理工具,將項目開發(fā)和管理過程抽象成一個項目對象模型(POM)
- POM(Project Object Model):項目對象模型
image-20210819112522459
二.Maven作用
- 項目構建:提供標準的,跨平臺的
自動化
項目構建方式 - 依賴管理:方便快捷的管理項目依賴的資源
jar包
,避免資源間版本沖突
的問題
三.Maven下載安裝
省略
四.Maven倉庫
1.倉庫概念
image-20210819113128973
image-20210819113254597
2.坐標
什么是坐標? Maven中坐標用來描述參股中資源位置
-
Maven坐標主要組成:
groupId:定義當前Maven項目的隸屬組織名稱(通常是域名反寫)
artifactId:定義當前Maven項目的名稱(通常是模塊名稱)
version:定義當前項目的版本號
packing:定義當前項目的打包方式
Maven坐標作用:使用的唯一標識,識別資源位置
3.Maven倉庫配置
- 本地倉庫配置
- 阿里云鏡像倉庫配置
五.Maven項目結構
image-20210819114742021
image-20210819120512453
六.tomact插件配置
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
1.第一種
image-20210819131006186
2.第二種
image-20210819130927174
七.依賴管理-依賴配置和依賴傳遞
1.依賴傳遞
image-20210819131413986
2.依賴傳遞沖突問題
- 路徑優(yōu)先:當依賴中出現(xiàn)相同的資源時,層級越深,優(yōu)先級越低,層級越淺,優(yōu)先級越高
- 聲明優(yōu)先:當資源在相同層級被依賴時,配置順序靠前的覆蓋配置順序靠后的
- 特殊優(yōu)先:當同級配置了相同資源的不同版本,后配置的覆蓋先配置的
3.排除依賴 主動 or 被動
被動
image-20210819132014360
主動
image-20210819132138951
4.依賴范圍
image-20210819132456807
image-20210819132713064
5.依賴范圍的傳遞性 了解
image-20210819133049923
八.生命周期與插件
image-20210819160807909
image-20210819160835243
image-20210819160821933
image-20210819160846789
image-20210819134703184
image-20210819160928956
Maven高級
1.工程模塊與模塊劃分
image-20210819161510509
2.分模塊開發(fā)設計
POJO
image-20210819161535713
DAO
image-20210819161546298
SERVICE
image
CONTROLLER
image-20210819161800828
3.聚合 子工程同時打包安裝部署
image-20210819162339352
image-20210819162400272
4.繼承
image-20210819163109463
繼承作用方式
image-20210819163121001
繼承依賴定義
image-20210819163202518
繼承依賴使用
image-20210819163215607
繼承的資源
image-20210819163237569
5.繼承和聚合
image-20210819163447191
6.屬性
image-20210819163643695
自定義屬性
image-20210819163713111
內置屬性
image-20210819163728511
image-20210819163755834
image-20210819163803749
image-20210819163812314
7.版本管理
image-20210819163916646
image-20210819163928184
8.資源文件配置
資源配置多文件維護
image-20210819164027526
配置文件引用pom屬性
image-20210819164105831
image-20210819164622261
<!--識別所有的配置文件-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
9.多開發(fā)環(huán)境配置
image-20210819165329160
多環(huán)境配置
image-20210819165403973
加載指定環(huán)境
image-20210819165517276
10.跳過測試
![image-20210819165716908](https://upload-images.jianshu.io/upload_images/26099831-b905a40456094e02.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
使用命令行跳過測試
image-20210819165733478
使用界面跳過測試
image-20210819165746580
使用配置文件跳過測試
image-20210819165803766
問題?
1.Maven打包后各目錄的含義
image-20210819120632048
2.如何解決版本沖突? 自動嗎?
3.Maven打成jar包后各目錄含義
site生命周期作用
4.pom和jar和war的區(qū)別
pom:打出來可以作為其他項目的maven依賴赊颠,在工程A中添加工程B的pom毛嫉,A就可以使用B中的類裳仆。用在父級工程或聚合工程中。用來做jar包的版本控制裹纳。
jar包:通常是開發(fā)時要引用通用類,打成jar包便于存放管理归斤。當你使用某些功能時就需要這些jar包的支持,需要導入jar包刁岸。
war包:是做好一個web網站后脏里,打成war包部署到服務器。目的是節(jié)省資源虹曙,提供效率迫横。
5.Maven生命周期和插件的區(qū)別
生命周期是依靠插件執(zhí)行的,內部集成調用了很多插件
6.maven依賴的繼承體系<dependencyManagement>
不加<dependencyManagement>,依賴全部繼承
加了不繼承
版本鎖定
面對眾多的依賴,有一種方法不用考慮依賴路徑酝碳、聲明優(yōu)先等因素矾踱,可以采用直接鎖定版本的方法確定依賴構件的版本
版本鎖定后,系統(tǒng)會以鎖定的版本的為準添加到工程中疏哗,此方法在企業(yè)開發(fā)中常用呛讲。