Maven介绍
Maven是什么?
Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
Maven的作用
- 项目构建:提供标准的、跨平台的自动化项目构建方式
- 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
- 统一开发结构:提供标准的、统一的项目结构
下载与安装
下载步骤如下:
-
进入官网后,选择Download
-
点击Download,划到最下边,找到Previous Releases下边的archives。
-
点击archives链接,就可以看到maven的各个历史版本了。
-
选择maven3.6.1版本。
之所以选择3.6.1版本是因为idea和maven不是同一个公司的产品,版本太高可能存在不兼容的问题。 -
点击进入binaries目录下载zip文件。
-
Maven属于绿色版软件,解压即安装
-
Maven环境变量配置,在环境变量中添加JAVA_HOME以及MAVEN_HOME
-
测试环境配置结果,在任意位置调出cmd输入MVN若显示如下结果,则表明Maven已经成功安装并配置好系统变量。
-
在setting.xml中完成镜像仓库配置
使用镜像仓库的好处是加快依赖下载速度 ,原本下载依赖都要去中央仓库下载,速度很慢。而配置完镜像仓库后,通过访问阿里的仓库大大加快下载速度。
其中<id>alimaven</id>
表示镜像仓库的标识ID叫alimaven,<mirrorOf>central</mirrorOf>
表明是中央仓库的镜像,<name>aliyun maven</name>
表明镜像的名称叫aliyun maven,<url>http://maven.aliyun.com/nexus/content/groups/public/*</url>
表明镜像仓库的url。
- 配置本地仓库存放的位置
由于maven默认的本地仓库存放位置在C盘下的.m2文件夹中,占用C盘资源这样不好,因此我们先在D盘创建本地仓库的文件夹,再修改setting.xml中的内容。
- 修改IDEA的Maven配置
点击File选择settings后,搜索Maven,完成如下图配置,点击Apply和OK。
至此Maven的下载安装、配置以及在IDEA中配置自己的Maven工作就完成了。
Maven基础概念
仓库
- 仓库的作用是用来存储资源,包含各种jar包
仓库分类
- 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源。
- 远程仓库:非本机电脑上的仓库,为本地仓库提供资源。分为中央仓库和私服。其中,中央仓库是Maven团队维护,存储所有资源的仓库。私服是部门或公司范围内存储资源的仓库,从中央仓库获取资源。
私服的作用:
- 保护具有版权的资源,包含购买或者自主研发的jar
- 一定范围内共享资源,仅对内部开放,不对外开放。
坐标
- Maven中的坐标用于描述仓库中资源的位置。
坐标的主要组成
- groupId:定义当前Maven项目隶属组织名称
- artifactId:定义当前Maven项目名称(通常是模块名称)
- version:定义当前项目版本号
- …
第一个Maven项目(手工制作)
Maven工程目录结构
在src同层目录下创建pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>project-java</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
Maven项目构建命令
maven构建命令使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔。
- mvn compile : 编译
- mvn clean :清理
- mvn test :测试
- mvn package :打包
- mvn install :安装到本地仓库
第一个Maven项目(IDEA生成)
原型创建Java项目
原型创建Web项目
依赖管理
依赖:依赖是指当前项目运行所需jar包,一个项目可以设置多个依赖,依赖具有传递性。
依赖传递:直接依赖:在当前项目通过依赖配置建立的依赖关系 间接依赖:不是直接依赖的jar包引用。
依赖传递冲突问题
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先: 当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先: 当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖
可选依赖是指对外隐藏当前所依赖的资源----不透明
关键标签:<optional>true/false</optional>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<optional>true</optional>
</dependency>
排除依赖
排除依赖是指主动断开依赖的资源,被排除的资源无需指定版本—不需要
关键标签<exclusions>
、<exclusion>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
生命周期与插件
项目构建生命周期
- Maven构建生命周期描述的是一次构建过程经历了多少个事件。
Maven对项目构建的生命周期划分为3套 - clean:清理工作
- default:核心工作,例如编译、测试、打包、部署等
- site:产生报告、发布站点等
插件
- 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
- 默认maven在各个生命周期上绑定有预设的功能
- 通过插件可以自定义其他功能
学习总结
本次学习了maven基础部分的知识,内容主要包括对maven的介绍、maven的下载安装及配置以及maven的使用和依赖管理。maven是一款非常不错的项目管理工具,有三大功能,非常适合用于项目构建。在maven中可以通过设置可选依赖和排除依赖实现对依赖传递的管理。