目录

一. Maven的作用

1.依赖管理

2.统一项目结构

3.项目构建

二.Maven安装配置

1. Maven的仓库类型

2 加载jar的顺序

3. Maven安装配置

4.安装Maven

5.配置仓库

三.idea集成maven

1.给当前project集成maven

2.给新建project集成maven

3.创建maven项目

4.pom.xml说明

四.Maven管理依赖

1. 引入依赖【重点】

2.依赖范围

3. 使用示例

4. 依赖传递

五.Maven构建项目

1 常见的构建命令:

2 构建项目

3. 项目构建的生命周期

Maven:中文翻译是“专家”、“内行“,它是Apache提供的免费开源的项目管理和构建工具

官网:Maven – Welcome to Apache Maven

一. Maven的作用

  • 依赖管理

  • 统一项目结构规范

  • 构建项目

1.依赖管理

一个企业级项目通常要依赖大量的jar包,这会导致一些问题的产生,比如:

  • 需要自己查找、下载、导入jar包到项目

  • jar包之间可能会产生冲突

2.统一项目结构

使用不同的IDE工具创建的项目结构是不同的,这会导致代码上也会出现差异。而maven提供了标准的、统一的项目结构,屏蔽了开发工具造成的差异。

3.项目构建

Maven提供了一套标准的、跨平台的自动化项目构建方式,它只需要通过简单的命令就能够对项目进行编译、测试、打包、安装、发布等等一系列的操作,实现一键构建项目。

无论是开发人员,还是测试、运维人员,maven都可以提供有力的工作支撑。

二.Maven安装配置

1. Maven的仓库类型

仓库类型:

根据仓库所在的位置不同,可分为:

  • 本地仓库:

    • 本地缓存jar包的文件夹

    • 本地仓库默认在:C:\Users\电脑的用户名\.m2\repository

    • 通常会修改配置文件,修改本地仓库的路径

  • 远程仓库(私服):

    • 一些企业、组织、社区搭建的仓库服务,私服里的jar包大多数还是来自于中央仓库

    • 有些是企业内部自己搭建、自己使用的;

  • 中央仓库

    • 是Maven官方团队维护的仓库,里边有最全的开源jar包。

      但是没有授权的jar包,中央仓库里没有,比如:Oracle驱动包

    • 地址:Central Repository:

2 加载jar的顺序

maven加载jar包的顺序:

  1. maven只会从本地仓库里查找并加载jar包。如果本地仓库里找不到jar包,就会:

    • 如果配置了远程仓库,就从远程仓库里查找jar包,下载到本地仓库

    • 如果没有配置远程仓库,就从中央仓库里查找jar包,下载到本地仓库

  2. 然后maven仍然是从本地仓库中加载jar包

3. Maven安装配置

下载Maven:3.5.x或3.6.x都可以

  • 各个版本的下载地址:Index of /dist/maven/maven-3

    maven3.6.1下载地址:Index of /dist/maven/maven-3/3.6.1/binaries

    Windows系统下载 .zip

    Mac系统下载 .tar.gz

  • Maven的目录结构:

|–binMaven的可执行命令文件夹
|–boot Maven的引导程序(类加载器)
|–conf 配置文件夹
|–libMaven的核心程序代码

4.安装Maven

注意:我们使用的maven3.5 或maven3.6版本,依赖于jdk11;过高版本的jdk,会导致maven运行出错;

1.解压Maven

Maven是免安装的,直接解压即可。但是要注意:解压路径里,不要有中文、空格、特殊字符。例如,我的maven解压到了C:/programs/apache-maven

2.配置Maven环境变量

增加MAVEN_HOME=Maven的解压目录。要注意:这个解压目录必须是 里边有bin、conf等等那些文件夹

修改Path中添加 %MAVEN_HOME%\bin

3.验证Maven配置

打开cmd,输入命令:mvn -versionmvn -v,如果正常输出maven版本信息,说明maven安装成功

5.配置仓库

1.配置Aliyun镜像地址

我们的maven没有私服,所以本地仓库里没有的jar包,maven会直接从中央仓库里查找下载。而中央仓库服务器在国外,速度慢且不稳定,经常会下载失败。

Aliyun提供了maven仓库镜像服务,我们把Aliyun的镜像服务地址配置给maven,就会从阿里云下载jar包,速度很快。

 aliyunmaven * 阿里云公共仓库 https://maven.aliyun.com/repository/public

2.配置本地仓库

默认情况下,maven会使用C:\Users\liuyp\.m2\repository作为本地仓库。如果你的C盘比较小,可以自定义本地仓库的路径。

配置方式:

  1. 打开maven里的conf/settings.xml

  2. 增加配置本地仓库路径

三.idea集成maven

注意:在File-Settings里配置,同时在File-OtherSettings-Settings for New projects里也配置

1.给当前project集成maven

配置Maven

增加运行的参数:-DarchetypeCatalog=local,让Maven从本地仓库加载骨架信息;选择使用JDK11

2.给新建project集成maven

上面仅仅针对当前打开的project有效。如果再新建project的话,maven仍然是未配置状态,还需要再次集成。所以这里做一下全局的maven集成,后期再创建新project时,maven也会默认生效。

在这里配置maven和Runder

3.创建maven项目

后期每次创建一个项目,全部都创建成project

创建Project

坐标:被maven管理的所有项目包括jar包,都必须一个唯一标识。这个唯一标识就是坐标

坐标由三部分组成:

  • groupId:通常是公司或组织的域名倒写。例如:com.itheima, com.jd

  • artifactId:项目名

  • version:版本号

4.pom.xml说明

4.0.0com.itheimaday04-maven-project11.0-SNAPSHOTjar1111UTF-8

四.Maven管理依赖

1. 引入依赖【重点】

如果项目中需要使用jar包,只需要把jar包的坐标配置到项目的pom.xml中即可。在pom.xml的标签里增加依赖坐标

可以使用 alt+insert,会弹出依赖导入的界面,可以从本地仓库里搜索依赖

如果不知道依赖的坐标,可以从中央仓库搜索坐标:https://mvnrepository.com/

2.依赖范围

如果项目中引入的jar包过多,可能会出现jar包冲突,我们可能设置jar包不同的依赖范围来处理jar包冲突。

Maven的依赖范围有:

  • compile:默认的依赖范围,全范围有效。

  • test:单元测试有效。src/test里有效,src/main里无效。打包时会忽略

  • provided:编译时有效,运行时使用其它地方提供的jar包。备胎。打包时会忽略

  • runtime:运行时有效,编译时无效。比如:数据库驱动包

  • system:引入仓库之外的本地jar包。少用

实际开发中特殊的jar包

  • Junit:依赖范围通常设置为test

  • servlet-api, jsp-api:依赖范围通常设置为provided

  • 数据库驱动包:依赖范围可以是默认的,也可以是runtime

  • 其它包,绝对多数都是默认依赖范围

3. 使用示例

如果项目中要使用单元测试和logback,就添加依赖两者的依赖坐标。最终pom.xml如下:

4.0.0com.itheimaday04-maven-project11.0-SNAPSHOT1111UTF-8junitjunit4.12testch.qos.logbacklogback-classic1.2.11

4. 依赖传递

1.依赖传递:

maven中添加的依赖是具有传递性的,即:项目依赖于A,而A依赖于B,maven会将A和B都帮我们导入进来。例如:刚刚我们添加了junit和logback两个坐标,而实际上导入了5个依赖。

2.依赖冲突的处理:

依赖传递可以帮我们减少pom.xml的代码量,但是也可能会造成依赖冲突。例如:

  • 项目依赖于A,A依赖于X(v1版本)

  • 项目依赖于B,B依赖于X(v2版本)

要想解决依赖冲突,可以使用maven的exclusions标签:

ch.qos.logbacklogback-classic1.2.11org.slf4jslf4j-apiorg.slf4jslf4j-api1.7.22

五.Maven构建项目

1. 在idea里构建项目

对项目代码进行编译、测试、打包、安装、发布等等一系列的操作过程,叫构建

maven可以通过命令,实现一键构建项目

1 常见的构建命令:

  • clean:清理。把之前编译的结果(target文件夹)删除掉

  • compile:编译。编译项目内src\main里的主体代码,编译结果会放到自动生成的target文件夹里

  • test:单元测试。编译并执行src\test里的单元测试代码

  • package:打包。把编译结果制作成程序包。

    如果打包方式是war,就打成war包

    如果打包方式是jar,或者没有配置打包方式,就打成jar包

  • install:安装。把程序包安装到本地仓库

  • deploy:发布。把程序包发布到私服上

2 构建项目

方式一:直接点击按钮

  1. 在idea右侧点击maven,在弹出的窗口中刷新一下

  2. 找到要操作的项目,在Lifecycle中找到要执行的命令,双击即可执行

方式二:输入命令执行

3. 项目构建的生命周期

Maven的三套生命周期:

  1. 清理生命周期:CleanLifeCycle

    有常用命令:clean

  2. 默认生命周期(构建生命周期):DefaultLifeCycle

    有常用命令:compile->test->package->install->deploy

  3. 站点生命周期:SiteLifeCycle

    有常用命令:site。生成Maven项目的描述信息文档

生命周期的作用:如果执行了一个目标命令:Maven会把生命周期里的命令,从第一个一直执行到目标命令为止