Maven基础知识

一、简介

        Maven是专门用于管理和构建Java项目的工具,提供一套标准项目结构、标准化的构建流程(编译、测试、打包、发布...)和一套依赖管理机制。

1.1 标准化项目结构

 1.2 标准化构建流程

        代码需要进行编译、测试、打包、发不,这些操作如果需要反复进行就会显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。

1.3 依赖管理 

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

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

二、Maven仓库

        创建Maven项目,在项目中使用坐标来指定项目的依赖,那么依赖的jar包到底存储在什么地方呢?其实依赖jar包是存储在我们的本地仓库中。而项目运行时从本地仓库中拿需要的依赖jar包。

2.1 仓库分类

  • 本地仓库:自己计算机上都一个目录
  • 中央仓库:有Maven团队维护的全球唯一的仓库 地址:Central Repository:
  • 远程仓库(私服):一般由公司团队搭建的私有仓库

2.2 仓库使用

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

  • 如果有,则在项目直接引用
  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库
  • 如果有远程仓库,jar包的查找顺序变为:本地仓库 --> 远程仓库--> 中央仓库

     (Maven配置详见笔记Java web Maven&MyBatis)

三、Maven基本使用

3.1 Maven常用命令

  • compile: 编译
  • clean: 清理
  • test: 测试
  • package: 打包
  • install: 安装

3.2 Maven生命周期

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

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

  • clean :清理工作。
  • default :核心工作,例如编译,测试,打包,安装等。
  • site : 产生报告,发布站点等。这套声明周期一般不会使用。

同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下:

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

(idea配置Maven详见笔记)

四、Maven坐标详解

        Maven坐标是资源的唯一标识,使用坐标来定义项目或引入项目中需要的依赖

Maven坐标主要组成:

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

注意:上面所说的资源可以是插件、依赖、当前项目。我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

五、依赖管理

5.1 使用坐标引入jar包

  • 在项目的 pom.xml 中编写 <dependencies> 标签
  • 在 <dependencies> 标签中 使用 <dependency> 引入坐标
  • 定义坐标的 groupId,artifactId,version 

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

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

  • 在 pom.xml 中 按 alt + insert,选择 Dependency
  • 在弹出的面板中搜索对应坐标,然后双击选中对应坐标
  • 点击刷新按钮,使坐标生效

5.3 自动导入设置 

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

六、依赖范围

  • 选择 IDEA中 File --> Settings
  • 在弹出的面板中找到 Build Tools
  • 选择 Any changes,点击 ok 即可生效

        通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。

 scope取值范围如下:

  • compile :作用于编译环境、测试环境、运行环境。
  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
  • provided :作用于编译环境、测试环境。对于servlet,我们使用它时必须将scope设置为该值,不然运行时就会报错
  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将scope设置为该值,当然不设置也没有任何问题(注意:如果引入坐标不指定scope标签时,默认就是compile值,以后大部分jar包都是使用默认值)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值