Maven基础入门

Maven简介

Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

官网 :http://maven.apache.org/

Maven是专门用于管理和构建Java项目的工具,它的主要功能有:

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

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

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

Maven构建的项目目录是统一的,如下图:

在这里插入图片描述

什么是依赖管理?
如果没有Maven的话,在项目中使用某些第三方资源时,就需要去下载对应的jar包

而Maven使用标准的 坐标 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理

如Mysql驱动包:
在这里插入图片描述

Maven 工作模式

在这里插入图片描述

1.仓库

当我们写好坐标之后,Maven是怎么导入这些依赖jar包的呢?

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

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

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

  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库。
    在这里插入图片描述

2.坐标

  • Maven 中的坐标是资源的唯一标识
  • 使用坐标来定义项目或引入项目中需要的依赖
  • 坐标查询网站:https://mvnrepository.com/

Maven 坐标主要组成

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写)
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
  • version:定义当前项目版本号

在这里插入图片描述

Maven的基本使用

1.常用命令

(1)compile :编译

  • 从中央仓库 / 阿里云下载编译需要的插件的jar包,在本地仓库也能看到下载好的插件
  • 在项目下会生成一个 target 目录

(2)clean:清理

  • 从阿里云下载清理需要的插件jar包
  • 删除项目下的 target 目录

(3)test:测试
该命令会执行所有的测试代码

(4)package:打包

  • 从阿里云下载打包需要的插件jar包
  • 在项目的 terget 目录下有一个jar包(将当前项目打成的jar包)

(5) install:安装
该命令会将当前项目打成jar包,并安装到本地仓库

2.生命周期

默认的生命周期:

在这里插入图片描述
注意:同一套生命周期内,执行后边的命令,前面的所有命令会自动执行

依赖管理

什么是依赖?
依赖指当前项目运行所需的jar,一个项目可以设置多个依赖

1.依赖配置

<!--设置当前项目所依赖的所有jar-->
<dependencies>
    <!--设置具体的依赖-->
    <dependency>
        <!--依赖所属群组id-->
        <groupId>org.springframework</groupId>
        <!--依赖所属项目id-->
        <artifactId>spring-webmvc</artifactId>
        <!--依赖版本号-->
        <version>5.2.10.RELEASE</version>
    </dependency>
</dependencies>

2.依赖传递

A依赖了B和C,B和C又分别依赖了其他jar包,所以在A项目中就可以使用上面所有jar包,这就是所说的依赖传递

直接依赖:
间接依赖:

在这里插入图片描述

3.可选依赖

可选依赖指对外隐藏当前所依赖的资源——不透明

<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven_03_pojo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递-->
    <optional>true</optional>
</dependency>

4.排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本—不需要

<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven_04_dao</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--排除依赖是隐藏当前资源对应的依赖关系-->
    <exclusions>
        <exclusion>
            <groupId>com.itheima</groupId>
            <artifactId>maven_03_pojo</artifactId>
        </exclusion>
    </exclusions>
</dependency>

A依赖B,B依赖C,C通过依赖传递会被A使用到,现在要想办法让A不去依赖C

  • 可选依赖是在B上设置<optional>,A不知道有C的存在,
  • 排除依赖是在A上设置<exclusions>,A知道有C的存在,主动将其排除掉。

5.依赖范围

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

比如Junit scope设置为test,就只能作用在测试环境

在这里插入图片描述

IDEA配置Maven

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值