目录
【Maven】
【功能】
- 提供了一个标准化的项目结构
- 提供了一套标准化的构建流程(编译、测试、打包、发布)
- 提供了一套依赖管理机制(管理jar包、插件)
【概述】
Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档
官网:Maven – Welcome to Apache Maven
【jar包仓库】
【分类】
- 本地仓库:自己计算机上的一个目录
- 中央仓库:由Maven团队维护的全球唯一的仓库,地址:Central Repository:
- 远程仓库(私服):一般由公司团队搭建的私有仓库
【注意】
- 当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包,如果有,则在项目直接引用;如果没有,则去中央仓库中下载对应的jar包到本地仓库。
- 还可以搭建远程仓库,jar包的查找顺序则变为:本地仓库➡远程仓库➡中央仓库
【Maven配置】
- 解压 apache-maven-3.6.1.rar 既安装完成
- 配置环境变量 MAVEN_HOME 为安装路径的bin目录
- 配置本地仓库:修改 conf/settings.xml 中的 <localRepository> 为一个指定目录
- 配置阿里云私服:修改 conf/settings.xml 中的 <mirrors>标签,为其添加如下子标签:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
【注意】 :
1.在配置好仓库之后需要在IDEA本项目中设置使用的settings文件路径和本地仓库路径
2.还需要在新项目创建中设置使用的settings文件路径和本地仓库路径
【Maven常用命令】
- mvn compile :编译
- mvn clean:清理
- mvn test:测试
- mvn package:打包
- mvn install:安装
【Maven坐标】
【概述】
- Maven中的坐标是资源的唯一标识
- 使用坐标来定义项目或引入项目中需要的依赖项
【组成】
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
- version:定义当前项目版本号
【IDEA创建Maven项目】
【步骤】
- 创建空项目
- 创建模块选择Maven,点击Next
- 填写模块名称,坐标信息,完成创建
【IDEA导入Maven项目】
【步骤】
- 选择右侧Maven面板,点击 + 号
- 选中对应项目的pom.xml文件,双击即可
- 如果没有Maven面板,选择View ➡ Appearance ➡ Tool Window Bars
【IDEA插件】——Maven-Helper
【依赖管理】
【步骤】——使用坐标导入jar包
- 在 pom.xml 中编写 <dependencies> 标签
- 在 <dependencies> 标签中 使用 <dependency> 引入坐标
- 定义坐标的 groupId,artifactId,version
- 点击刷新按钮,使坐标生效
【步骤】——使用坐标导入jar包-快捷方式
- 在 pom.xml 中 按 alt + insert,选择 Dependency
- 在弹出的面板中搜索对应坐标,然后双击选中对应坐标
- 点击刷新按钮,使坐标生效
【步骤】——使用坐标导入jar包-自动导入
- 选择 IDEA中 File --> Settings
- 在弹出的面板中找到 Build Tools
- 选择 Any changes,点击 ok 即可生效
【依赖范围】
【概述】
- 通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境
依赖范围 | 编译classpath | 测试classpath | 运行classpath | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | logback |
test | - | Y | - | Junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
system | Y | Y | - | 存储在本地的jar包 |
import | 引入DependencyManagement |
【注意】:<scope>的默认值是compile