目录
1.Maven
1.1Maven简介
Apache Maven 是一个项目管理和构建 工具 ,它基于项目对象模型 (POM) 的概念,通过一小段描述信息来管理项目的构建、报告和文档。官网 : http://maven.apache.org/
1.1.1Maven模型
项目对象模型 (Project Object Model)
依赖管理模型(Dependency)
插件(Plugin)
1.1.2仓库
仓库分类:
本地仓库:自己计算机上的一个目录
中央仓库:由Maven团队维护的全球唯一的仓库
地址:
https://repo1.maven.org/maven2/
远程仓库(私服
)
:一般由公司团队搭建的私有仓库
今天我们只学习远程仓库的使用,并不会搭建。
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的
jar
包:
如果有,则在项目直接引用;
如果没有,则去中央仓库中下载对应的jar包到本地仓库。
1.2Maven安装配置
从网上下载maven:
解压缩后的目录结构如下:
bin目录 : 存放的是可执行命令。mvn 命令重点关注。conf目录 :存放Maven的配置文件。 settings.xml 配置文件后期需要修改。lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。
配置环境变量
MAVEN_HOME
为安装路径的
bin
目录
出现如下页面代表maven安装成功
mac os 必须建立.bash_profile文件,在该文件中配置环境变量,再输入mvn -v之前,输入source .bash_profile,让命令生效
配置本地仓库
配置阿里云私服
中央仓库在国外,所以下载
jar
包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的
jar
包。
修改
conf/settings.xml
中的 标签,为其添加如下子标签:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
1.3Maven基本使用
1.3.1Maven使用命令
compile :编译clean :清理test :测试package :打包install :安装
1.3.2Maven生命周期
Maven
构建项目生命周期描述的是一次构建过程经历经历了多少个事件
Maven
对项目构建的生命周期划分为
3
套:
clean
:清理工作。
default
:核心工作,例如编译,测试,打包,安装等。
site
: 产生报告,发布站点等。这套声明周期一般不会使用。
1.4IDEA使用Maven
以后开发中我们肯定会在高级开发工具中使用
Maven
管理项目,而我们常用的高级开发工具是
IDEA
。
1.4.1IDEA配置Maven环境
搜索maven:
设置
IDEA
使用本地安装的
Maven
,并修改配置文件路径
1.4.2Maven坐标详解
什么是坐标?
Maven
中的坐标是
资源的唯一标识
使用坐标来定义项目或引入项目中需要的依赖
Maven
坐标主要组成
groupId
:定义当前
Maven
项目隶属组织名称(通常是域名反写,例如:
com.itheima
)
artifactId
:定义当前
Maven
项目名称(通常是模块名称,例如
order-service
、
goods-service
)
version
:定义当前项目版本号
1.4.3IDEA创建Maven项目
1.4.4IDEA导入Maven项目
1.5依赖管理
1.5.1使用坐标引入jar包
使用坐标引入jar包的步骤:
在项目的
pom.xml
中编写 标签
在 标签中 使用 引入坐标
定义坐标的
groupId
,
artifactId
,
version
点击刷新按钮,使坐标生效
注意:具体的坐标我们可以到如下网站进行搜索https://mvnrepository.com/
1.6.1依赖范围
通过设置坐标的依赖范围
(scope)
,可以设置 对应
jar
包的作用范围:编译环境、测试环境、运行环境。
如下图所示给
junit
依赖通过
scope
标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。
compile :作用于编译环境、测试环境、运行环境。test : 作用于测试环境。典型的就是 Junit 坐标,以后使用 Junit 时,都会将 scope 指定为该值provided :作用于编译环境、测试环境。我们后面会学习 servlet - api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错runtime : 作用于测试环境、运行环境。 jdbc 驱动一般将 scope 设置为该值,当然不设置也没有任何问题