首页 > 其他分享 >【学习自用】Maven

【学习自用】Maven

时间:2023-08-01 23:23:02浏览次数:29  
标签:学习 依赖 项目 仓库 jar Maven 自用 坐标

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

  • 提供了一套标准化的项目结构
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……)
  • 提供了一套依赖管理机制
image-20210726153815028

**标准化的构建流程: **

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

依赖管理:

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

image-20210726154922337

如上图右边所示就是mysql驱动包的坐标,在项目中只需要写这段配置,其他都不需要我们担心,Maven都帮我们进行操作了。(在pom.xml中)

简介

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

Maven模型

  • 项目对象模型 (Project Object Model)
  • 依赖管理模型(Dependency)
  • 插件(Plugin)
image-20210726155759621

如上图所示就是Maven的模型,而我们先看紫色框框起来的部分,他就是用来完成 标准化构建流程 。如我们需要编译,Maven提供了一个编译插件供我们使用,我们需要打包,Maven就提供了一个打包插件提供我们使用等。

image-20210726160928515

项目对象模型就是将我们自己抽象成一个对象模型,有自己专属的坐标,如下图所示是一个Maven项目:

image-20210726161340796

依赖管理模型则是使用坐标来描述当前项目依赖哪儿些第三方jar包,如下图所示

image-20210726161616034

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

仓库分类:

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

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

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

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

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

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

查找顺序则变为:

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

基本使用

常用命令

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

如:

mvn complie;	// 在pom.xml目录下

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

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

关于坐标

什么是坐标?

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

Maven 坐标主要组成

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

如下图就是使用坐标表示一个项目:

image-20210726174718176

注意:

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

依赖管理

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

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

  • 标签中 使用 引入坐标

  • 定义坐标的 groupId,artifactId,version

        <!-- 导入 mysql 驱动jar包-->
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.32</version>
            </dependency>
        </dependencies>
    
  • 点击刷新按钮,使坐标生效

    具体的坐标可以到如下网站搜索:https://mvnrepository.com/

快捷导入

  • 在 pom.xml 中 按 alt + insert,选择 Dependency。在弹出的面板中搜索对应坐标,然后双击选中对应坐标

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

依赖范围

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

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

image-20230801230304806

scope 取值:

依赖范围 编译classpath 测试classpath 运行classpath 例子
compile Y Y Y logback
test - Y - Junit
provided Y Y - servlet-api
runtime - Y Y jdbc驱动
system Y Y - 存储在本地的jar包
  • compile :作用于编译环境、测试环境、运行环境。
  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
  • provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错
  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题
  • 如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。

详细

image-20230801230015103

参考资料:
[1]黑马程序员Maven全套教程
[2]https://maven.apache.org/guides/index.html

标签:学习,依赖,项目,仓库,jar,Maven,自用,坐标
From: https://www.cnblogs.com/ZhangYF98/p/17599415.html

相关文章

  • 华为datacom-HCIA学习之路
    华为datacom-HCIA华为datacom-HCIA11.第四弹51.1.OSPF认证51.1.1.基于接口认证51.1.1.1.接口认证更优先61.1.1.2.[R2]interfaceg0/0/161.1.1.3.[R2-g0/0/1]ospfauthentication-modesimplehuawei61.1.1.3.1.明文认证61.1.1.4.[R2-g0/0/1]ospfauthentication-mo......
  • vscode学习笔记1
    官网网址:https://code.visualstudio.com/方式一:直接下载。方式二:一直往下滑,到最后,选择安装模式。(下图中系统安装模式)安装过程省略。(全部默认选择下一步,接受许可即可)安装中文语言包,并设置显示语言为中文。最后显示效果。......
  • JDBC从入门到精通深入学习路线图?
    JDBC从入门到精通深入学习路线图?JDBC从入门到精通深入学习路线图?学习JDBC(JavaDatabaseConnectivity)从入门到精通,可以按照以下深入学习路线图进行:1.Java基础知识:在开始学习JDBC之前,建议先掌握Java的基础知识,包括面向对象编程概念、Java语法、异常处理等等。2.SQL语言:熟悉SQ......
  • 随便说说学习感想
    发现学习vue得对htmlcssjavascript,typescript 这几门语言的要求还是比较高的,略懂的学起来很陌生,入门的学习起来也很吃力,最少也要熟悉的人学由于本人以前大部分是做后端,所以刚学习起来很费力,这几天都在狠狠补 htmlcssjavascript这些知识,边看边学  目前来看,想直接做项......
  • 从入门到精通,大厂内部整理Android学习路线
    前言当今随着互联网的日益发展,许多开发者也想来这个行业尝尝甜头,甚至没有基础的开发者也进门了,因此,这个Android零基础教程就分享出来。但是对于Android新手入门,没有一个好的学习方向,学习规划,学习教程,是万万不行的。新手入门就来就处于啥也不知道的状态,而网上的教程太过于分散,没有完......
  • k8s 学习笔记之资源管理方式
    三种管理方式命令式对象管理:直接使用命令去操作k8s资源kubectlrunnginx-pod--image=nginx:1.17.1--port=80命令式对象配置:通过命令配置和配置文件操作k8s资源kubectlcreate/patch-fnginx-pod.yaml命令式声明配置:通过apply命令和配置文件操作k8s资源kubectl......
  • Sprint Boot学习路线3
    嵌入式服务器SpringBoot的嵌入式服务器功能是一项方便而强大的功能,它允许你在应用程序中直接运行Web服务器,无需将其部署到单独的独立Web服务器中。这使得开发、测试和部署Web应用程序变得容易,而且它还是轻量级的、易于启动和停止的,易于配置。HibernateHibernate是一个Ja......
  • k8s 学习
    标签(空格分隔):k8s学习一.什么是k8s自动化的容器运维工具。二.k8s的相关概念cluster集群Master主控KubernetesAPIService(k8sAPI服务)--对外KubernetesControllerManager(k8s控制管理器)--管理和自动修复KubernetesScheduler(k8s调度器)--调度pod到节点Etcd(保存集群的所有网络配置......
  • 七月学习之Iptables基本介绍
    1、Iptables基本介绍1.1、什么是防火墙过去,很长一段时期里,房屋都是草屋结构,如果一家失火,四邻也会跟着遭殃,所以为安全起见,古人就在自己居住地周围修筑高高的围墙以阻挡外来的火势,保护自身的安全,这种墙就叫"防火墙"。如今,"因特网"把世界各地的计算机都紧密的连接在一起,如果不严加防......
  • openGauss学习笔记-27 openGauss 高级数据管理- JOIN
    openGauss学习笔记-27openGauss高级数据管理-JOINJOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。在openGauss中,JOIN有五种连接类型:CROSSJOIN:交叉连接INNERJOIN:内连接LEFTOUTERJOIN:左外连接RIGHTOUTERJOIN:右外连接FULLOUTERJOIN:全外连......