【Maven从入门到实战教程】第三章 Maven仓库和坐标

蔚落 2024-04-28 13:17 156阅读 0赞

一、Maven仓库概述

Maven仓库分类:
本地仓库:本地主机上的仓库。
远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。

Maven的工作需要从仓库下载一些jar包,如下图所示,本地的Maven项目都会通过Maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存放到本地仓库,本地仓库就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。

下图描述了maven中仓库的类型:

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5oiR5piv5rOi5ZOp5Liq5rOi_size_16_color_FFFFFF_t_70_g_se_x_16

二、中央仓库

由于最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行Maven命令时下载到需要的构建。

中央仓库是Maven默认的远程仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。

中央仓库地址是:https://repo.maven.apache.org/maven2。

Maven的安装文件默认自带了中央仓库的配置,在MAVEN_HOME/lib/maven-model-builder.jar中可找到,org\apache\maven\model\pom-4.0.0.xml,其中配置有中央仓库地址。

  1. <repositories>
  2. <repository>
  3. <id>central</id>
  4. <name>Central Repository</name>
  5. <url>https://repo.maven.apache.org/maven2</url>
  6. <layout>default</layout>
  7. <snapshots>
  8. <enabled>false</enabled>
  9. </snapshots>
  10. </repository>
  11. </repositories>

三、私有仓库

一种特殊的远程仓库,它是架设在局域网内的仓库,主要是为了团队协作开发,可以理解为自己公司的仓库,也叫私服。

配置阿里云镜像,阿里云镜像其实就是阿里的私有仓库,只是公开给大家使用。

  1. <mirror>
  2. <id>alimaven</id>
  3. <name>aliyun maven</name>
  4. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  5. <mirrorOf>central</mirrorOf>
  6. </mirror>

使用私服的好处:

节省自己的外网带宽:建立私服可以减少组织自己的开支,大量的对于外部远程仓库的重复请求会消耗很大的带宽,利用私服代理外部仓库后,对外的重复构件下载得以消除,即降低外网带宽的压力。

加速Maven的构建:不停的请求外部仓库无疑是比较耗时的,但Maven的一些内部机制(如快照检测)要求Maven在执行构建的时候不停地检查远程仓库的数据。因此当配置了很多远程仓库时,构建的速度会被大大降低。使用私服可以很好地解决这个问题。

部署第三方构件:当某个构件无法从外部远程仓库下载怎么办?这样的例子很多,如组织内部的生成的私有的构件肯定无法从外部仓库获取,Oracle的JDBC驱动由于版权原因不能发布到外网的中心仓库。建立私服之后便可以将这些构件部署到本地私服中,供内部的Maven项目使用。

提高稳定性,增强控制:Maven构建搞定依赖于远程仓库,因此,当Internet不稳定的时候,Maven构建也会变的不稳定,甚至无法构建。
使用私服后即使暂时没有Internet连接Maven也可以正常运行,因为私服中缓存了大量的构件。此外一些私服软件(如:Nexus)还提供了很多额外的功能,如权限管理,RELEASE/SNAPSHOT区分等,管理员可以对仓库进行一些更高级的控制。

降低中央仓库的负荷:数百万的请求,存储数T的数据,需要相相当大的财力。使用私服可以避免很多对中央仓库的重复请求。

四、本地仓库

当Maven执行编译或测试时,如果需要使用到依赖文件,它总是基于坐标使用本地仓库的依赖文件。默认情况下,不管Linux还是Windows,每个用户在自己的用户目录下都有一个路径名为.m2/respository/的仓库目录。

从中央仓库或私有仓库中下载jar包和Maven信息或者自己打jar包的依赖仓库。

默认位置:~/.m2/repository

修改本地仓库位置:在MAVE_HOME/conf/settings.xml文件中配置本地仓库位置。

  1. <localRepository>D:\maven\repository</localRepository>

五、Maven坐标

Maven仓库中拥有大量的依赖jar包,需要用来唯一标识来构建的统一规范。拥有统一规范,就可以从Maven仓库中准确的找到所需依赖。

  1. <dependency>
  2. <!-- Maven依赖的坐标GAV -->
  3. <groupId></groupId>
  4. <artifactId></artifactId>
  5. <version></version>
  6. </dependency>

发表评论

表情:
评论列表 (有 0 条评论,156人围观)

还没有评论,来说两句吧...

相关阅读