Maven基础
一. Maven是什么?
- 本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(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.依赖传递冲突问题
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
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.分模块开发设计
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.多开发环境配置
image-20210819165329160
多环境配置
image-20210819165403973
加载指定环境
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的区别
pom:打出来可以作为其他项目的maven依赖,在工程A中添加工程B的pom,A就可以使用B中的类。用在父级工程或聚合工程中。用来做jar包的版本控制。
jar包:通常是开发时要引用通用类,打成jar包便于存放管理。当你使用某些功能时就需要这些jar包的支持,需要导入jar包。
war包:是做好一个web网站后,打成war包部署到服务器。目的是节省资源,提供效率。
5.Maven生命周期和插件的区别
生命周期是依靠插件执行的,内部集成调用了很多插件
6.maven依赖的继承体系<dependencyManagement>
不加<dependencyManagement>,依赖全部继承
加了不继承
版本锁定
面对众多的依赖,有一种方法不用考虑依赖路径、声明优先等因素,可以采用直接锁定版本的方法确定依赖构件的版本
版本锁定后,系统会以锁定的版本的为准添加到工程中,此方法在企业开发中常用。