1.1 Maven概述
- 了解maven是什么
1.1.1 【Maven概述】疑问
-
思考:之前的项目中我们是如何导入依赖的?
后续工作中,项目进行编译,测试,打包,发布操作 繁琐,如何避免?
-
问题1:Maven是什么?
-
问题2:Maven主要的功能有哪些?
1.1.2 【Maven概述】解答
-
问题1:Maven是什么?
管理 和 构建 Java项目 的 工具
为什么使用Maven:因为maven可以帮我们进行项目的管理和构建,所以我们使用它,现在市面上大约80%的公司都在使用maven,如果你连maven都不会用,那么很可能你进公司,连项目都跑不起来
-
问题2:Maven主要的功能有哪些?
-
提供了一套标准化的项目结构
-
提供了一套标准化的构建流程(编译,测试,打包,发布……)
-
-
提供了一套依赖管理机制
-
1.2 Maven简介
目标:
- 掌握maven项目特点
- 掌握maven的仓库模型
1.2.1 【Maven简介】疑问
-
问题1:Maven如何实现项目打包的?
-
问题2:项目对象模型和依赖管理模型是啥?
-
问题3:Maven仓库分类以及jar包的下载流程?
1.2.2 【Maven简介】解答
-
问题1:Maven如何实现项目打包的?
提供了一套插件,用来完成
标准化构建流程
-
问题2:项目对象模型 和 依赖管理模型 是啥?
Maven使用标准的 坐标 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
项目对象模型 是将我们自己抽象成一个对象模型,有自己专属的坐标
依赖管理模型 是使用坐标来描述当前项目 依赖哪些第三方jar包
-
问题3:Maven仓库分类以及jar包的下载流程?
-
Maven仓库分类
-
本地仓库:自己计算机上的一个目录
-
中央仓库:由Maven团队维护的全球唯一的仓库
-
远程仓库(私服):一般由公司团队搭建的私有仓库
-
-
jar包的下载流程
-
1.3 Maven安装配置
安装配置步骤:
-
解压 apache-maven-3.6.1.rar 既安装完成
-
配置环境变量 MAVEN_HOME 为安装路径的bin目录
-
配置本地仓库:conf/settings.xml
-
配置阿里云私服:conf/settings.xml
选择你需要的maven版本下载:官网下载传送门
我使用的是3.6.1版本:maven-3.6.1-bin.zip
把下载好的maven压缩包解压到一个没有中文,空格或其他特殊字符的文件夹,如:
配置环境变量
1.右键此电脑->属性->高级系统设置->环境变量
.新建系统变量MAVEN_HOME
编辑系统变量Path,添加变量值%MAVEN_HOME%\bin
验证安装是否成功,win+R运行cmd,输入mvn -v,如图所示则配置成功
配置settings文件
1.在Maven安装目录conf目录下找到settings.xml配置文件
2.修改本地仓库地址
(1)在maven安装目录下新建本地仓库文件夹maven_repository
(2)修改默认本地仓库地址
3.配置私服,因为中央仓库在国外导致下载jar包很慢或者失败,所以我们改为国内的服务器,下面三个选择一个就可以了。
(一般会用阿里云的镜像库,但不知道是我电脑还是网络的原因,下载jar包总会出错,换了很多阿里云镜像都不管用,最后换了腾讯云的就好了,所有这里给出了三个镜像)
【阿里云】
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
【网易】
<mirror>
<id>nexus-163</id>
<mirrorOf>*</mirrorOf>
<name>Nexus 163</name>
<url>http://mirrors.163.com/maven/repository/maven-public/</url>
</mirror>
【腾讯云】
<mirror>
<id>nexus-tencentyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus tencentyun</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
将镜像复制到两个mirrors标签之间
4.配置jdk,也要夹在两个profiles标签之间
<!-- java1.8版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
1.4【Maven基本使用】解答
-
问题1:Maven如何实现项目打包的?
提供了一套插件,用来完成
标准化构建流程
-
compile :编译
-
clean:清理
-
test:测试
-
package:打包
-
install:安装
命令行执行:进入到项目的
pom.xml
目录下,打开命令提示符编译:mvn compile 清理:mvn clean 打包:mvn package 安装:mvn install
-
-
问题2:Maven生命周期特点?
Maven 对项目构建的生命周期划分为3套:
-
clean :清理工作
-
default :核心工作,例如编译,测试,打包,安装等
-
site : 产生报告,发布站点等。这套声明周期一般不会使用
同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。
-
-
问题3:Maven中如何区分仓库中的各个对象?
Maven 中的坐标是资源的唯一标识
-
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
-
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
-
version:定义当前项目版本号
-
1.5 IDEA使用Maven
1.6 依赖管理
1.6.1【依赖管理】解答
-
问题1:使用坐标引入jar包的步骤
-
在项目的 pom.xml 中编写 <dependencies> 标签
-
在 <dependencies> 标签中 使用 <dependency> 引入坐标
-
定义坐标的 groupId,artifactId,version
-
点击刷新按钮,使坐标生效
注意:
-
具体的坐标我们可以到如下网站进行搜索
-
-
1.7 依赖范围(了解即可)
【依赖范围】解答
-
问题1:常见的依赖范围有哪些?
设置坐标的依赖范围(scope)
-
可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境
不同的阶段引入到classpath中的依赖是不同的
-
问题2:常见的依赖范围有哪些?
依赖范围 编译classpath 测试classpath 运行classpath 例子 compile Y Y Y logback test - Y - Junit provided Y Y - servlet-api runtime - Y Y jdbc驱动 system Y Y - 存储在本地的jar包 -
compile :作用于编译环境、测试环境、运行环境。
-
test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
-
provided :作用于编译环境、测试环境。我们后面会学习
servlet-api
,在使用它时,必须将scope
设置为该值,不然运行时就会报错 -
runtime : 作用于测试环境、运行环境。jdbc驱动一般将
scope
设置为该值,当然不设置也没有任何问题
注意:
-
如果引入坐标不指定
scope
标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。
-
jdbc驱动依赖,为什么可以设置在runtime范围?
项目主代码编译的时候只需要JDK提供的JDBC接口,只有在测试和运行的时候才需要实现上述接口的具体JDBC驱动。