- Maven是专门用于管理和构建Java项目的工具,它的主要功能有:
- 提供了一套标准化的项目结构
- 提供了一套标准化的构建流程(编译,测试,打包,发布...)
- 提供了一套依赖管理机制
- 标准化的项目结构
- 不同IDE之间,项目结构不一样,不通用
- Maven提供了一套标准化的项目结构,所有IDE使用Maven构建的项目结构完全一样,所有IDE创建的Maven项目可以通用
- 标准化的构建流程
- 依赖管理机制
- 依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件...)
- Maven使用标准的坐标配置来管理各种依赖
- 只需要简单的配置就可以完成依赖管理
Maven简介
- Apache Maven是一个项目管理和构建工具,它基于项目对模型(POM)的概念,通过一小段描述信息来管理项目的创建、报告和文档
- 官网:Maven – Welcome to Apache Mavenhttps://maven.apache.org/
Maven 作用:
- 标准化的项目结构
- 标准化的构建流程
- 方便的依赖管理
Maven 模型:
- 仓库分类:
- 本地仓库:自己计算机上的一个目录
- 中央仓库:由Maven团队维护的全球唯一的仓库
- 地址:Central Repository: (maven.org)https://repo1.maven.org/maven2/
- 远程仓库(私服):一般由公司团队搭建的私有仓库
- 当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
- 如果有,则在项目直接引用;
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库。
- 还可以搭建远程仓库,将来jar包的查找顺序则变为:
- 本地仓库->远程仓库->中央仓库
- 项目对象模型(Project Object Model)
- 依赖管理模型(Dependency)
- 插件(Plugin)
Maven安装配置
- 解压Maven安装包既安装完成
- 配置环境变量 MAVEN_HOME 为安装路径的bin目录
- 配置本地仓库:修改conf/seetings.xml 中的<localRepository>为一个指定目录
- 配置阿里云私服:修改conf/seetings.xm 中的<mirrors>标签,为其添加如下子标签:
<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:产生报告,发布站点等、
Maven 坐标详解
- 什么是坐标?
- Maven 中的坐标是资源的唯一标识
- 使用坐标来定义项目或引入项目中需要的依赖
- Maven坐标主要组成
- groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
- artifactld:定义当前Maven项目名称(通常是模块名称,例如:order-service、goods-service)
- version:定义当前项目版本号
依赖范围
- 通过设置坐标的依赖范围(scope),可以设置对应jar包的作用范围:编译环境、测试环境、运行环境。 如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。
- compile :作用于编译环境、测试环境、运行环境。
- test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
- provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不 然运行时就会报错
- runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题