Maven介绍和安装

1.1 Maven概述

  • 了解maven是什么

1.1.1 【Maven概述】疑问

  • 思考:之前的项目中我们是如何导入依赖的?

    后续工作中,项目进行编译,测试,打包,发布操作 繁琐,如何避免?

  • 问题1:Maven是什么?

  • 问题2:Maven主要的功能有哪些?

1.1.2 【Maven概述】解答

  • 问题1:Maven是什么?

    管理 和 构建 Java项目 的 工具

    为什么使用Maven:因为maven可以帮我们进行项目的管理和构建,所以我们使用它,现在市面上大约80%的公司都在使用maven,如果你连maven都不会用,那么很可能你进公司,连项目都跑不起来

  • 问题2:Maven主要的功能有哪些?

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

       

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

    •  

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

       

       

1.2 Maven简介

目标:

  • 掌握maven项目特点
  • 掌握maven的仓库模型

1.2.1 【Maven简介】疑问

  • 问题1:Maven如何实现项目打包的?

  • 问题2:项目对象模型和依赖管理模型是啥?

  • 问题3:Maven仓库分类以及jar包的下载流程?

1.2.2 【Maven简介】解答

  • 问题1:Maven如何实现项目打包的?

    提供了一套插件,用来完成 标准化构建流程

  • 问题2:项目对象模型 和 依赖管理模型 是啥?

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

    项目对象模型 是将我们自己抽象成一个对象模型,有自己专属的坐标

     

    依赖管理模型 是使用坐标来描述当前项目 依赖哪些第三方jar包

     

  • 问题3:Maven仓库分类以及jar包的下载流程?

    • Maven仓库分类

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

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

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

    • jar包的下载流程

       

       

1.3 Maven安装配置

安装配置步骤:

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

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

  • 配置本地仓库:conf/settings.xml

  • 配置阿里云私服:conf/settings.xml

选择你需要的maven版本下载:官网下载传送门

我使用的是3.6.1版本:maven-3.6.1-bin.zip

在这里插入图片描述

 

把下载好的maven压缩包解压到一个没有中文,空格或其他特殊字符的文件夹,如:

在这里插入图片描述

配置环境变量 

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

在这里插入图片描述

.新建系统变量MAVEN_HOME

编辑系统变量Path,添加变量值%MAVEN_HOME%\bin

在这里插入图片描述 

验证安装是否成功,win+R运行cmd,输入mvn -v,如图所示则配置成功在这里插入图片描述 

配置settings文件

1.在Maven安装目录conf目录下找到settings.xml配置文件 

在这里插入图片描述

2.修改本地仓库地址 

(1)在maven安装目录下新建本地仓库文件夹maven_repository在这里插入图片描述

(2)修改默认本地仓库地址在这里插入图片描述 

 3.配置私服,因为中央仓库在国外导致下载jar包很慢或者失败,所以我们改为国内的服务器,下面三个选择一个就可以了。
(一般会用阿里云的镜像库,但不知道是我电脑还是网络的原因,下载jar包总会出错,换了很多阿里云镜像都不管用,最后换了腾讯云的就好了,所有这里给出了三个镜像)
【阿里云】

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

【网易】

<mirror>
    <id>nexus-163</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus 163</name>
    <url>http://mirrors.163.com/maven/repository/maven-public/</url>
</mirror>

 【腾讯云】

<mirror>
    <id>nexus-tencentyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus tencentyun</name>
    <url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror> 

将镜像复制到两个mirrors标签之间

在这里插入图片描述

4.配置jdk,也要夹在两个profiles标签之间

 

<!-- java1.8版本 --> 
<profile>
      <id>jdk-1.8</id>
      <activation>
	    <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
      </activation>

      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
      </properties>
</profile>


1.4【Maven基本使用】解答

  • 问题1:Maven如何实现项目打包的?

    提供了一套插件,用来完成 标准化构建流程

    • compile :编译

    • clean:清理

    • test:测试

    • package:打包

    • install:安装

    命令行执行:进入到项目的 pom.xml 目录下,打开命令提示符

    编译:mvn compile
    清理:mvn clean
    打包:mvn package
    安装:mvn install

  • 问题2:Maven生命周期特点?

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

    • clean :清理工作

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

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

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

  • 问题3:Maven中如何区分仓库中的各个对象?

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

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

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

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

       

1.5 IDEA使用Maven

在这里插入图片描述

在这里插入图片描述 

1.6 依赖管理

1.6.1【依赖管理】解答

  • 问题1:使用坐标引入jar包的步骤

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

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

    3. 定义坐标的 groupId,artifactId,version

       

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

      注意:

1.7 依赖范围(了解即可)

 【依赖范围】解答

  • 问题1:常见的依赖范围有哪些?

    设置坐标的依赖范围(scope)

  •  

    可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境

    不同的阶段引入到classpath中的依赖是不同的

  • 问题2:常见的依赖范围有哪些?

    依赖范围编译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包都是使用默认值。

jdbc驱动依赖,为什么可以设置在runtime范围?

项目主代码编译的时候只需要JDK提供的JDBC接口,只有在测试和运行的时候才需要实现上述接口的具体JDBC驱动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值