Maven提供了一套标准化的项目结构,所有IDE
使用Maven
构建的项目结构完全一样,所有IDE
创建的Maven
项目可以通用
Maven是专门用于管理和构建Java项目的工具,它的主要功能有:
- 提供了一套标准化的项目结构
- 提供了一套标准化的构建流程(编译、测试、打包、发布…)
- 提供了一套依赖管理机制
项目结构
项目名称 | ||||
---|---|---|---|---|
src | 源代码和测试代码目录 | |||
main | 源代码目录 | |||
java | 源代码Java文件目录 | |||
resources | 源代码配置文件目录 | |||
webapp | Web项目核心目录 | |||
test | 测试代码目录 | |||
java | 测试代码Java文件目录 | |||
resources | 测试代码配置文件目录 | |||
pom.xml | 项目核心配置文件 |
依赖管理
依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件…)
- Maven使用标准的坐标配置来管理各种依赖
- 只需要简单的配置就可以完成依赖管理
仓库分类
- 本地仓库:自己计算机上的一个目录
- 中央仓库:由Maven团队维护的全球唯一的仓库,地址:
https://repo1.maven.org/maven2/
- 远程仓库(私服):一般由公司团队搭建的私有仓库
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包
- 如果有,则在项目直接引用
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库
如果搭建了私服,先从本地找,找不到到私服找,还是找不到就去中央仓库,找到之后下载到私服,然后私服再传递给本地仓库
安装配置
- 解压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>
常用命令
- compile:编译
- clean:清理
- test:测试
- package:打包
- install:安装
坐标详解
什么是坐标?
- maven中的坐标是资源的唯一标识
- 使用坐标来定义项目或引入项目中需要的依赖
Maven坐标主要组成
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service,goods-service)
- version:定义当前项目版本号
依赖管理
- 在pom.xml中编写
<dependencies>
标签 - 在该标签中使用
<dependency>
引入坐标 - 定义坐标的groupId,artifactId,version
- 点击刷新按钮,使坐标生效
依赖范围
通过设置坐标的依赖范围(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