Maven基础篇

目录

1. Maven

1.1 Maven简介

1.1.1 Maven模型

1.1.2 仓库

1.2 Maven安装配置

1.2.1 安装

1.2.2 配置

1.3 Maven基本使用

1.3.1 Maven 常用命令

1.3.2 Maven 生命周期

1.4 IDEA使用Maven

1.4.1 IDEA配置Maven环境

1.4.2 Maven 坐标详解

1.5 依赖管理

1.5.1 使用坐标引入jar包

1.5.2 依赖范围


1. Maven

官网 :Maven – Welcome to Apache Maven

依赖仓库:https://mvnrepository.com/

1.1 Maven简介

Maven是一款Java项目管理工具,它可以自动化构建、测试和部署Java应用程序。 Maven使用基于XML的配置文件来定义项目的构建过程,称为“POM”(Project Object Model)。

它的主要功能有:

  • 提供了一套标准化的项目结构

  • 提供了一套标准化的构建流程(编译,测试,打包,发布……)

  • 提供了一套依赖管理机制

标准化的项目结构:

项目结构我们都知道,每一个开发工具(IDE)都有自己不同的项目结构,它们互相之间不通用。我再eclipse中创建的目录,无法在idea中进行使用,这就造成了很大的不方便,而Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目完全一样,所有IDE创建的Maven项目可以通用。

标准化的构建流程:

一个项目的开发往往都需要进行编译、测试、打包、发布这些操作,如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建,只需要运行以下相应的生命周期就能执行对应操作。

依赖管理:

依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。如之前我们项目中需要使用JDBC和Druid的话,就需要去网上下载对应的依赖包(当前之前是老师已经下载好提供给大家了),复制到项目中,还要将jar包加入工作环境这一系列的操作。

而Maven使用标准的 坐标 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。这就相当于把一个一个的功能块单独划分了出来,减低代码间的耦合。每个单独的依赖项可以算是单独的项目,更方便测试,检查。

1.1.1 Maven模型
  • 项目对象模型 (Project Object Model)

  • 依赖管理模型(Dependency)

  • 插件(Plugin)

1.1.2 仓库

问题:当我们创建Maven项目时,往往需要在项目中通过坐标来指定项目的依赖,那么依赖的jar包存储在什么地方呢?

其实依赖jar包是存储在我们的本地仓库中。而项目运行时从本地仓库中拿需要的依赖jar包。

仓库分类:

  • 本地仓库:自己计算机上的一个目录

  • 中央仓库:由Maven团队维护的全球唯一的仓库

  • 远程仓库(私服):一般由公司团队搭建的私有仓库

当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:

  • 如果有,则在项目直接引用;

  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库。

如果搭建了远程仓库,将来jar包的查找顺序则变为:

本地仓库 --> 远程仓库--> 中央仓库

1.2 Maven安装配置

1.2.1 安装
  1. 到官网下载Maven-3.6.1

  2. 解压 apache-maven-3.6.1.rar 既安装完成

建议解压缩到没有中文、特殊字符的路径下。如在D盘下新建一个Maven文件夹 D:\Maven

解压缩后的目录结构如下:

  • bin目录 : 存放的是可执行命令。mvn 命令重点关注。

  • conf目录 :存放Maven的配置文件。settings.xml 配置文件后期需要修改。

    • lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。

  1. 配置环境变量 MAVEN_HOME 为安装路径的bin目录

此电脑 右键 --> 属性 --> 高级系统设置 --> 高级 --> 环境变量

在系统变量处新建一个变量 MAVEN_HOME ,然后编辑

 

添加路径,需要注意路径的层级

 

 

Path 中进行配置,新增 %MAVEN_HOME%\bin

在命令提示符或终端窗口中,键入“mvn -version”命令以验证Maven是否正确安装和配置。

1.2.2 配置

打开conf文件夹下的 settings.xml配置文件,配置以下两点即可

  • 配置本地仓库

默认情况下,本地仓库位于用户主目录下的“.m2”文件夹中。可以按照以下操作更改:

找到<settings>标签,并在该标签内部添加以下内容:(绝对路径)

<localRepository>D:\Maven\repository</localRepository>

如果您使用多个Maven项目,也可以在每个项目的“pom.xml”文件中指定使用的本地仓库。在“pom.xml”文件中,您可以使用以下内容指定本地仓库路径:

 <repositories>
   <repository>
     <id>local-repo</id>
     <url>file:///path/to/local/repo</url>
   </repository>
 </repositories>

将“/path/to/local/repo”替换为您希望设置为本地仓库的目录的绝对路径。这样,每个项目都可以使用不同的本地仓库路径。

  • 配置阿里云私服

aliyun官网:仓库服务

中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。

修改 conf/settings.xml 中的 <mirrors>标签,为其添加如下子标签:

 <mirror>
   <id>aliyunmaven</id>
   <mirrorOf>*</mirrorOf>
   <name>阿里云公共仓库</name>
   <url>https://maven.aliyun.com/repository/public</url>
 </mirror>

配置完保存关闭就行

1.3 Maven基本使用

1.3.1 Maven 常用命令
  • compile :编译

  • clean:清理

  • test:测试

  • package:打包

  • install:安装

命令演示:

而我们使用上面命令需要在磁盘上进入到项目的 pom.xml 目录下,打开命令提示符

编译命令演示:

 compile :编译

执行上述命令可以看到:

  • 从阿里云下载编译需要的插件的jar包,在本地仓库也能看到下载好的插件

  • 在项目下会生成一个 target 目录,编译后的字节码文件就放在该目录下

清理命令演示:

 mvn clean

执行上述命令可以看到

  • 从阿里云下载清理需要的插件jar包

  • 删除项目下的 target 目录

打包命令演示:

 mvn package

执行上述命令可以看到:

  • 从阿里云下载打包需要的插件jar包

  • 在项目的 terget 目录下有一个jar包(将当前项目打成的jar包)

测试命令演示:

 mvn test  

该命令会执行所有的测试代码。

安装命令演示:

 mvn install

该命令会将当前项目打成jar包,并安装到本地仓库。

1.3.2 Maven 生命周期

Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件

Maven 对项目构建的生命周期划分为3套:

  • clean :清理工作。

  • default :核心工作,例如编译,测试,打包,安装等。

  • site : 产生报告,发布站点等。这套声明周期一般不会使用。

同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。

当我们执行 install(安装)命令时,它会先执行 compile命令,再执行 test 命令,再执行 package 命令,最后执行 install 命令。

当我们执行 package (打包)命令时,它会先执行 compile 命令,再执行 test 命令,最后执行 package 命令。

默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的:

1.4 IDEA使用Maven

Idea中默认集成了Maven,但是也要知道怎么更改配置

1.4.1 IDEA配置Maven环境

我们需要先在IDEA中配置Maven环境:

  • 选择 IDEA中 File --> Settings

  • 搜索 maven

  • 设置 IDEA 使用本地安装的 Maven,并修改配置文件路径

1.4.2 Maven 坐标详解

什么是坐标?

  • Maven 中的坐标是资源的唯一标识

  • 使用坐标来定义项目或引入项目中需要的依赖

Maven 坐标主要组成

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.zhaoxi)

  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

  • version:定义当前项目版本号

注意:

  • 上面所说的资源可以是插件、依赖、当前项目。

  • 我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

配置 Maven-Helper 插件

在idea中添加Maven-Helper插件,方便

1.5 依赖管理

1.5.1 使用坐标引入jar包

使用坐标引入jar包的步骤:

  • 在项目的 pom.xml 中编写 <dependencies> 标签

  • 在 <dependencies> 标签中 使用 <dependency> 引入坐标

  • 定义坐标的 groupId,artifactId,version

  • 点击刷新按钮,使坐标生效

注意:

快捷方式导入jar包的坐标:

每次需要引入jar包,都去对应的网站进行搜索是比较麻烦的,接下来给大家介绍一种快捷引入坐标的方式

  • 在 pom.xml 中 按 alt + insert,选择 Dependency

  • 在弹出的面板中搜索对应坐标,然后双击选中对应坐标

  • 点击刷新按钮,使坐标生效

自动导入设置:

上面每次操作都需要点击刷新按钮,让引入的坐标生效。当然我们也可以通过设置让其自动完成

  • 选择 IDEA中 File --> Settings

  • 在弹出的面板中找到 Build Tools

  • 选择 Any changes,点击 ok 即可生效

1.5.2 依赖范围

通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。

如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。

那么 scope 都可以有哪些取值呢?

依赖范围编译classpath测试classpath运行classpath例子
compileYYYlogback
test-Y-Junit
providedYY-servlet-api
runtime-YYjdbc驱动
systemYY-存储在本地的jar包
  • compile :作用于编译环境、测试环境、运行环境。

  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值

  • provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错

  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题

注意:

  • 如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嗯兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值