您的位置 首页 > 数码极客

maven如何维护本地仓库

什么是Maven仓库

Maven仓库是基于简单文件系统存储的,集中化管理Java API资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的,Maven可以在某个位置统一存储所有的Maven项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。

说人话就是Maven仓库是通过坐标机制存储对应的构件,并且可以通过坐标机制查找到对应的构建,并且我们自己构建的构件也可以上传到Maven仓库中(只要权限足够)。


Maven使用坐标机制

为了解决我们配置文件时如何精确地查到正确的依赖构件,Maven引入了坐标机制来唯一的确定每一个构件。坐标机制通过三个向量来唯一确定所需构件,分别是:

  • groupId:定义当前Maven组织名称
  • artifactId:定义实际项目名称
  • version:定义当前项目的当前版本

pom文件中添加依赖配置如下所示:

<!-- 三个向量坐标定位 --> <dependency> <groupId>xxxxxx</groupId> <artifactId>xxxxxx</artifactId> <version>xxxxxx</version> </dependency>

Mavan仓库类型

Maven存放构件的仓库分两种:本地仓库和远程仓库。

Maven寻找构件的时候,先查看本地仓库,如果本地仓库存在坐标对应的构件,就直接使用。如果本地仓库不存在所需要的构件,或者需要查看是否有更新的构件版本,Maven 就会去远程仓库查找,发现需要的构件后,下载到本地仓库后使用,如果本地仓库和远程仓库都没有找到需要的构件,Maven就报错。

本地仓库

一般情况下我们安装完Maven之后如果没有配置setting文件,则默认的本地仓库地址就是~/.m2/repository。

如果我们需要修改地址仓库地址的话,可以通过修改setting文件的<localRepository>标签即可。

<localRepository>${u}/.m2/repository</localRepository>

远程仓库

远程仓库分为三种:中央仓库、其他仓库和私服

中央仓库是由Maven社区提供的仓库,其中包含了大量常用的库,基本涵盖了我们所需要的所有开源构件。下面是中央仓库的配置(同时配置了插件和依赖仓库):

<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>;/url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>;/url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories>

私服

私服是一个特殊的远程仓库,架设在局域网内。它是一个代理外网的远程仓库,供局域网内部的Maven用户使用。一般情况下远程仓库都是使用Nexus部署,私服也是一样的。在Nexus中有三种仓库类型:

  • 远程代理仓库【Proxy】:本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
  • 宿主仓库【Hosted】:它们被用来代理远程的公共仓库,如maven中央仓库。
  • 仓库组【Group】:用来合并多个hosted/proxy仓库,当你的项目希望在多个Repository使用资源时就不需要多次引用了,只需要引用一个group即可。

私服的使用重要有以下几个优点:

  1. 节省外部带宽:获取一个特定构件,一个局域网只要请求一次即可,不用每个用户都请求中央仓库或者第三方仓库;
  2. 提高Maven的效率:访问很多外部仓库,特别是中央仓库网络是比较差的,直接使用私服,因为是内部网络,速度会快很多;
  3. 便于部署第三方构件:如果某个构件仅限内部使用,没有私服相对会比较麻烦。有了私服,可以将它们部署到私服中,这样局域网内的Maven用户就可以使用该构件了;
  4. 提高Maven的稳定性,更方便控制管理:外部的仓库有可能出现断网,停服务以及其他安全风险(权限控制等等);
  5. 降低中央仓库的负荷压力

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“maven如何维护本地仓库”边界阅读