目录
Maven
作用:专门用于管理和构建 java 项目的工具
它的主要功能有:
-
提供了一套标准化的项目结构
-
提供了一套标准化的构建流程(编译,测试,打包,发布……)
-
提供了一套依赖管理机制
标准的项目化结构
Maven 安装配置
解压 apache-maven-3.6.1.rar 既安装完成
解压缩后的目录结构如下
-
bin目录 : 存放的是可执行命令。mvn 命令重点关注。
-
conf目录 :存放Maven的配置文件。
settings.xml
配置文件后期需要修改。 -
lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。
-
-
配置环境变量
配置环境变量 MAVEN_HOME 为安装路径的bin目录 `此电脑` 右键 --> `高级系统设置` --> `高级` --> `环境变量` • 在系统变量处新建一个变量 `MAVEN_HOME`
-
配置本地仓库
修改 conf/settings.xml 中的 <localRepository> 为一个指定目录作为本地仓库,用来存储jar包。
将注释里 1 位置的代码,放到 注释外部 2 的位置,并将其路径配好
配置阿里云私服
中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。
下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
Maven 常用命令
-
compile : 编译
-
clean : 清理
-
test: 测试
-
package : 打包
-
install : 安排
Maven 生命周期
Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件
Maven 对项目构建的生命周期划分为3套:
-
clean :清理工作。
-
default :核心工作,例如编译,测试,打包,安装等。
-
site : 产生报告,发布站点等。这套声明周期一般不会使用。
同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。
例如:
当我们执行 install
(安装)命令时,它会先执行 compile
命令,再执行 test
命令,再执行 package
命令,最后执行 install
命令。
当我们执行 package
(打包)命令时,它会先执行 compile
命令,再执行 test
命令,最后执行 package
命令。
默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的
maven 坐标详情
什么是坐标?
-
Maven 中的坐标是==资源的唯一标识==
-
使用坐标来定义项目或引入项目中需要的依赖
Maven 坐标主要组成
-
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
-
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
-
version:定义当前项目版本号
如下图所示,一个坐标
依赖管理:
依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。
步骤:使用坐标导入 jar 包
-
在 pom.xml 中编写 <dependencies> 标签
-
在 <dependencies> 标签中 使用 <deprndency> 引入坐标
-
定义坐标的 groupld ,artifactld ,version
-
点击刷新按钮,使坐标生效
依赖范围
通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境,
例如
scope 有这些范围:
依赖范围 | 编译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包都是使用默认值。