maven的基本概念介绍

maven的基本概念介绍

本文目的

  接上一篇maven出现之前样子,继续介绍maven的基本情况,打算这篇文章只写maven仓库坐标,下一篇再单独讲版本

正文

1. maven的出现

   上一篇写过maven出现之前的种种问题、日渐增长的需求呼声。最终某些大神已经抓耳挠腮,忍不住放了大招,创建了各种应对的项目管理工具,造福我们。
  项目管理工具的出现,也是大神们基于这些大量项目的实际需求,抽象了一个完整的管理模型,限制大家,只要遵循世界里的约束写法,就可以直接使用大量成熟的maven插件完成任务、实现项目的自动依赖。

1.1 maven 定义

  maven翻译为“专家、内行”,也可以翻译为“知识的积累”。maven作为apache组织中的开源项目,是一个跨平台的项目管理工具(windows/mac/linux都是一样的命令)。主要功能是基于java平台的项目构建依赖管理项目信息管理。无论小型开源类库项目、企业级应用、传统开发、敏捷模式,都能很好的大显身手。(源自《maven实战》)
  maven通过约定,各大公司都将自己的jar提前准备到一个公共仓库(中央仓库)里,对外提供下载地址,开发项目只要按照maven项目的结构进行配置,那随时随地可以下载项目需要依赖的jar包,并且保证了源码与依赖分离多个项目共用依赖,节省了很多的构建浪费的时间,同时还能拥有maven丰富插件的一些帮助。

2. maven 坐标

  maven中有坐标的概念,每个在仓库里的jar包,都是以坐标来唯一表示的。
  关于坐标,大家最熟悉的定义应该来自平面几何,在一个平面坐标系中,坐标(x,y)能够唯一标识平面上的一个点。
在这里插入图片描述

  而实际生活中,我们也可以将地址看成一种坐标。省、市、县、乡、村等信息,能够唯一标识出某个地址。

2.1 坐标的组成

  maven的坐标来是由groupIdartifactIdversionpackagingclassifier这些标签合在一起组成的,如下一个最简单的依赖:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-all</artifactId>
    <version>1.7.1</version>
</dependency>

  每个组织或个人形成的这些jar包,即构件,在maven仓库里存储的时候,都以上边的坐标形式来唯一表示,不可能存在相同坐标的构件。

2.2 标签的介绍

   groupIdorg开头表示非盈利组织、com开头表示商业组织,还有见过cn开头,表示中国社区(比如大名鼎鼎的hutool工具包就是cn开头)。
  一般groupId是三段。第一段即上边的开头,第二段表示公司或组织,第三段代表的是项目名(第三段有的时候没有,但我觉得最清晰的应该是要有第三段的)。
  artifactIdjar包名称,必须有的。
  version即对应当前jar包的版本,因为jar包也是个组织或公司维护的小项目,肯定也是不停的迭代,需要有版本的管理。具体版本这块,会放到下一节单独讲。
  packaging分为jarwarpom

  • jar包大家都清楚了,一般像我们引用的依赖,都是jar包,springboot默认的启动项目也是jar包。
  • war包是需要放到容器中启动的(现在springboot也可以改成war包,直接java -jar启动。);
  • pom的话,比如做父子项目结构,或者声明统一引用。

3. maven 仓库

  坐标对应的只是一个个的jar包,maven通过仓库来统一管理这些jar包文件。
  maven仓库将自己想象成一个世界,所有组织、个人放到世界里的jar,也就是构件,都采用坐标的表现形式来锁定到唯一的构件。每个jar都属于maven世界里的一个坐标点。

  maven定义了这样一组规则:世界上任何一个构件,都可以使用maven坐标唯一标识。

3.1 maven 仓库分类

  仓库有本地仓库远程仓库之分。其中远程仓库又分为中央仓库私服仓库其他公共仓库。大概如下图:
在这里插入图片描述

  • 私服,因为存在有自己开发jar包的情况,不能发布到公网上,这种情况的话,就需要自己建立私服,一般现在常用的仓库管理器就是nexus
  • 中央仓库,即Maven自己官方仓库,大部分像现在一些能叫得上名的依赖,都会在中央仓库中发布,其他的仓库基本都是基于中央仓库同步。
  • 其他公共仓库,因为中央仓库一般下载比较慢,所以国内也有阿里云等开放的公共仓库可以下载。
  • 本地仓库,即自己电脑上设置的maven仓库,当使用maven的时候,就会先到本地仓库里获取,本地仓库没有的话,就会从公司私服上找,私服上没有的话,就会根据私服配置的外网仓库来同步。
3.2 maven 下载依赖过程

  如下图,具体描述的我们在Maven项目开发过程中,依赖下载的过程。
在这里插入图片描述

   从上图大概可以看到,当项目首次加载的时候,都会先到本地仓库找,找不到再到私服上找,找到的话,会同步到本地仓库,如果找不到,那就要依靠私服上配置的外网仓库依次查找,直到找到,如果找不到,那就没有了。

4. nexus私服

   这里再看下公司私服界面端的一些信息。当然每个公司不太一样,只要知道大概有啥东西就行了。
   在公司里开发,一般领导都会让你们连特定的一个maven地址,那可以把它们复制出来在浏览器上访问以下,一般都能访问出东西,只不过有的是那种简单的树结构,有的是nexus的UI界面。如下:
在这里插入图片描述
   还有的删一下路径,比如上图,删掉后边的路径到http://www.xxxx.com/nexus之后,可能会出来下边的页面:
在这里插入图片描述
   如果能出现UI界面,假如有账号的话,登录进去才可以看到仓库的一些东西。因为一般普通开发无权限登录这个页面,可能给你们的账号登录不上。

   登录成功后可以看到下边的信息:
在这里插入图片描述
   这样大概也能理解nexus是个什么了,总之,它是一个专门用来搭建maven私服的一个仓库管理器,它里边主要就是仓库、有对应的各种配置下载依赖的源地址。每个仓库里有对应的依赖包管理,并且可以在这个UI界面里上传依赖、查看依赖信息等操作。

5. 结束语

   主要都是文字,可能看起来有点费劲,主要理解仓库坐标这两个东西吧,下一篇会单独讲version,也是我感觉最有意思的。所以单独拿出来写,希望不能太失望。
  下一篇maven版本号version的总结及理解

猜你喜欢

转载自blog.csdn.net/wohaqiyi/article/details/119235116