• Maven概述


     一.为什么需要Maven?

         我们程序员在开发一个项目时,往往都需要使用到很多的第三方类库.一个项目的jar包通常是很多的,令我们瞠目结舌,且它们之间的关系十分复杂.以往我们在开发一个项目时需要花费很多时间在引用jar包搭建项目上,而这又十分复杂,通常会造成很多的麻烦.这时候Maven就因用而生.

    我们通常会遇到的问题:

    • 1.jar包难以寻找

    • 2.jar包依赖的问题

    • 3.jar不方便管理

    • 4.项目编译问题

    二.什么是Maven?

        Maven基于项目对象模型(POM project object model),是一款开源的项目管理工具.可以通过一小段描述信息(配置)来管理项目中的jar及jar包之间的依赖关系,完成项目的编译,测试,打包及发布等工作.

    • Maven的核心功能是合理叙述项目之间的依赖关系,就是通过pom.xml文件的配置来获取jar包,而不用我们手动去添加jar包.

    • 如果我们需要使用pom.xml来获取jar包,那么我们在创建项目时就应该将项目创建为Maven项目.

    • 我们可以通俗的理解为Maven项目就在java项目和web项目的外面套上了一层Maven,本质上java项目还是java项目,web项目还是web项目.但是在包裹了Maven之后,我们就可以使用Maven提供的一些功能,如通过pom.xml添加jar包.

    三.Maven中的概念(名词释义)

    1.POM(Project Object Model项目对象模型):

        POM是项目对象模型的简称,它是Maven项目中的文件,使用xml表示,名称为pom.xml.该文件用于管理: 源代码,配置文件,开发者的信息,问题追踪机制,组织信息,项目授权,项目的rul,项目的依赖关系等.

    事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件.

    2.项目坐标:

        在Maven中给每一个jar定义了一个唯一的标识,我么将它称为Maven项目的坐标.通过项目坐标我们可以在仓库中找到我们所需要的任何jar包.

    常见的项目坐标包含一下3个部分:

        groupId,artifactId,version.

    有的项目坐标除了以上3者还会有: packaging 它的值是可选的(默认为 jar)

    栗子:
    servlet4.0.1的项目坐标如下所示:

    1. javax.servlet
    2.  javax.servlet-api
    3.  4.0.1
    4.  provided

    3.仓库:

        我们知道通过Maven可以很方便的获取到我们所需的jar包,那么这些jar包是存放在哪里呢?也就是我们是在哪里去获取这些所需的jar包呢?
      ​ 答案就是: 仓库

    仓库分为以下几种:

    • 中央仓库:
          
      中央仓库即为Maven内置的远程公用仓库,是由Maven自己维护的,里面存放了大量的常用类库,并且包含了世界上大部分流行的开源软件的项目jar包. 当我们需要使用一个jar包时,如果本地仓库中没有,那么Maven就会自动从中央仓库中去下载并且保存到本地仓库.

    • 镜像仓库:
           
      镜像仓库即是一个第三方仓库,一般是由公司自己设立的.当第三方仓库作为镜像仓库使用时,它就会将中央仓库中的jar包保存在其中,减少了我们对中央仓库的访问频率,提高jar包的下载速度,类似于一个中转站.

    • 本地仓库:
           Maven会将工程中依赖的构建(jar包)从远程下载到本机的一个目录下进行管理,一般情况下我们会修改默认的本地仓库地址,自己创建一个文件夹用做本地仓库的地址. 这样我们每次在Maven项目中输入一个新的项目坐标,Maven就会自动去向远程仓库中去下载所需jar包,并将它存放在本地仓库中.以后每次写项目直接从本地仓库中获取jar包,而不用去远程仓库下载.

    图片助解仓库之间的关系:

     230beccbb45642bd8fb42fe3115c9c5a.png

  • 相关阅读:
    使用C++实现MySQL数据库编程
    【万字详解】JavaScript算法 | 力扣经典题~收藏起来,面试用得上
    TiKV 内存参数性能调优
    关于环境保护html网页设计完整版-4环保垃圾分类5页
    洋葱架构、三层架构及两者区别
    APIJSON自动化ORM库,后端接口和文档自动化实践整理 (一)
    SCXI-1104C NI 利用人工智能和机器学习进行网络防御
    Linux 系统安装 Redis7 —— 超详细操作演示!
    Leetcode.1465 切割后面积最大的蛋糕
    复合索引abc,查询的时候查c a和ac都能用到索引吗
  • 原文地址:https://blog.csdn.net/weixin_52629592/article/details/125842734